__stack_chk_failを利用したGOT Overwrite

このアイデアに初めて出会った時「なるほど!!」と感心した。

一つ前の記事のように、main関数の最後にわかりやすくexit関数があったりはしない。 ソースコードには書かれていない__stack_chk_fail関数の存在を思い出す。

__stack_chk_failのGOT Overwriteおよびcanaryの破壊を行い、ROPでシェルをとる。

続きを読む

リターンアドレス書き換えと引数指定

picoCTF 2022 「buffer overflow 2」。

bofでリターンアドレスを書き換えてwin関数に飛ぶ。しかし、そのwin関数は引数を2つとる関数であり、それぞれの引数を適切に設定してやる必要がある。

飛んだ先の関数が”引数アリ”の場合のpayloadの作り方に注意。

続きを読む

bofによるリターンアドレス書き換えの基礎

bofを利用してリターンアドレスを書き換える。今回はプログラム中にフラグを出力するwin関数があったので、リターンアドレスをwin関数のアドレスに書き換える。

とても基本的な問題だけどとても大切だし、秒でフラグがとれたから自分の基礎力の定着が確認できた。

続きを読む

ローカル変数の書き換え

picoMini by redpwnの「clutter-overflow」。ローカル変数の書き換えをしてif文の判定をTrueにしフラグを出力。

基礎的な問題だが、ローカル変数の書き換え、スタックの様子など良い復習になった。

続きを読む