セキュリティ · CTF

自作バイナリで教育目的にメモリを操る

スタックバッファオーバーフローから、既存のwin関数へのリターンアドレス書き換え(ret2win)までを、あなた自身の手元でビルドした自作バイナリだけで扱います。シェルコードもROPチェーンも作りません。

実習
localhost で実習
環境構築
重さ 2 / 3
前提
ctf-intro / sec-c
倫理
第0章の法と倫理ゲートへの同意が必須です。

読み込み中…

自作物・教育目的の最重量コースです。あなた自身の手元(gcc/gdb/Python)で、意図的に保護を無効化してビルドしたvuln.cだけを対象にします。ネットワーク越しの攻撃や、他人の環境、公開されているCTF基盤は一切対象にしません。シェルコードの作成やROPチェーンの構築はこのコースの範囲外です——扱うのは、既存の関数へリターンアドレスを差し替える「ret2win」一本です。

章の一覧

  1. 未完了第0章はじめに — このコースの一線pwnカテゴリの範囲と、このコースが扱う技術(ret2winのみ、シェルコード・ROPチェーンなし)を明確にします。あなた自身の手元の自作バイナリだけを対象にすることを確認し、法と倫理ゲートに同意します。約5分次はここ
  2. 未完了第1章脆弱なプログラムを作り、書き換え位置を読むgets()を使った脆弱なプログラムを、保護を意図的に無効化してビルドします。objdumpでスタックフレームを読み、リターンアドレスまでのオフセットを計算します。約15分次はここ
  3. 未完了第2章リターンアドレスを書き換えて、win関数に飛ばすpwntoolsでペイロードを組み立て、リターンアドレスをwin関数のアドレスで上書きします。実行して、想定外の関数が実行されることを確認します。約12分次はここ
  4. 未完了第3章まとめ — 保護は、何を防いでいたか同じ入力を、デフォルトの保護付きでビルドした場合と比較し、スタックカナリアがオーバーフローを検知してプロセスを強制終了することを確認します。pwnカテゴリの要点を畳み、次のカテゴリへ送り出します。約8分次はここ

詰まったときはお助けページへ。章ごとのファイル一式をダウンロードして、途中から再開できます。