セキュリティ · CTF
自作バイナリで教育目的にメモリを操る
スタックバッファオーバーフローから、既存のwin関数へのリターンアドレス書き換え(ret2win)までを、あなた自身の手元でビルドした自作バイナリだけで扱います。シェルコードもROPチェーンも作りません。
- 実習
- localhost で実習
- 環境構築
- 重さ 2 / 3
- 前提
- ctf-intro / sec-c
- 倫理
- 第0章の法と倫理ゲートへの同意が必須です。
読み込み中…
自作物・教育目的の最重量コースです。あなた自身の手元(gcc/gdb/Python)で、意図的に保護を無効化してビルドしたvuln.cだけを対象にします。ネットワーク越しの攻撃や、他人の環境、公開されているCTF基盤は一切対象にしません。シェルコードの作成やROPチェーンの構築はこのコースの範囲外です——扱うのは、既存の関数へリターンアドレスを差し替える「ret2win」一本です。
章の一覧
- 未完了第0章はじめに — このコースの一線pwnカテゴリの範囲と、このコースが扱う技術(ret2winのみ、シェルコード・ROPチェーンなし)を明確にします。あなた自身の手元の自作バイナリだけを対象にすることを確認し、法と倫理ゲートに同意します。約5分
- 未完了第1章脆弱なプログラムを作り、書き換え位置を読むgets()を使った脆弱なプログラムを、保護を意図的に無効化してビルドします。objdumpでスタックフレームを読み、リターンアドレスまでのオフセットを計算します。約15分
- 未完了第2章リターンアドレスを書き換えて、win関数に飛ばすpwntoolsでペイロードを組み立て、リターンアドレスをwin関数のアドレスで上書きします。実行して、想定外の関数が実行されることを確認します。約12分
- 未完了第3章まとめ — 保護は、何を防いでいたか同じ入力を、デフォルトの保護付きでビルドした場合と比較し、スタックカナリアがオーバーフローを検知してプロセスを強制終了することを確認します。pwnカテゴリの要点を畳み、次のカテゴリへ送り出します。約8分
詰まったときはお助けページへ。章ごとのファイル一式をダウンロードして、途中から再開できます。