SlideShare a Scribd company logo
MCC CTF講習会
ー pwn編2 ー
2017/07/10
@TUAT
hama (@hama7230)
⾃⼰紹介
´hama (@hama7230)
´CTFは趣味
´TokyoWesterns
l pwn担当
´最近、pwnの基礎基本
が分かってきような気
がする程度の実⼒
1
最初に注意
今⽇の内容を、許可されていないシ
ステムに対して実⾏は犯罪です
やるならCTFでやりましょう
2
今⽇と来週の内容
´先週の内容
1. 簡単なCTFの説明
2. 簡単なpwnの説明
3. pwnのやり⽅
4. 軽く実践
´今⽇の予定
1. 簡単なテクニックの紹介
2. とにかく実践
3
初⼼者向けテクニック集
´pwnはある領域をoverwriteすることに
よって制御を奪うジャンル
l 例外はあります(Ex. Race Condition)
´では、どこを書き換えると制御を奪える
のか?
l 今⽇はよくあるテクニック、攻め筋を紹介
4
eip(rip)を奪う⼿法
´eip(rip)は実⾏している命令のアドレス
を指すレジスタ
l このレジスタを任意に制御したい
l あるところを書き換えると制御を奪える
5
Return Address Overwrite
´return address overwrite
l スタックにあるリターンアドレスを書き換える
l 関数の終わりに制御を奪える
l 任意の箇所に制御を移せるのでシェルコードへ
ジャンプ
l ret2plt, ret2libcなどのROPに繋がって⾏く
´StackでのBuffer OverFlowがある場合狙
える
´canaryがある場合は注意
l canaryのleakが必要
6
GOT Overwrite
´解決したライブラリ関数のアドレスを保
持しておくのがGlobal Offset Table
´GOTを書き換えておくと、その関数が呼
ばれたときに制御を奪える
´ユーザの⼊⼒をそのまま渡すatoi(),
strlen()などをsystem()に書き換えるパ
ターンはよく使う
7
.fini_array Overwrite
´main関数が終了した後に呼ぶ処理のア
ドレスは、.fini_arrayに格納する
´ここを書き換えてくと、main関数終了
後に制御を奪える
8
.fini_array Overwrite
´スクショだと、.fini_arrayは0x8049ec0
´writableなので書き込み可能
9
_IO_jump_t Overwrite
´stdinやstdoutの実体はFILE構造体
´FILE構造体は関数テーブルのポインタ
を持っている
´関数テーブルのポインタを書き換えるか、
stdin/stdout/stderrの指す先を書き換
えて偽造すれば制御を奪える
10

More Related Content

PDF
MCC CTF講習会 pwn編
PDF
LUCENE-5252 NGramSynonymTokenizer
PPTX
みんなのはんなりPython勉強会
PDF
Rnn+lstmを理解する
PPTX
ODP
mlabCTFの話
PPTX
Pylm public
PDF
dl-with-python01_handout
MCC CTF講習会 pwn編
LUCENE-5252 NGramSynonymTokenizer
みんなのはんなりPython勉強会
Rnn+lstmを理解する
mlabCTFの話
Pylm public
dl-with-python01_handout
Ad

MCC CTF講習会 pwn編2