コンピュータセキュリティのコンテストCTFのジャンルの1つであるpwnableに焦点をあてて、 解析用の環境の構築方法、スタックバッファの構造、書式文字列攻撃、C++コードの解析、 ヒープオーバーフローによる攻撃方法等の基礎を解説します。
頒布
- コミックマーケット99
- 2021年12月31日(金)
- 金曜日 東ト42b superflip
- 技術書典9
- 2020年9月12日(土)~ 2020年9月22日(火)
- ネットの海 270e superflip
- コミックマーケット97
- 2019年12月31日(火)
- 火曜日 南リ05a superflip
- 技術書典7
- 2019年9月22日(日)
- お52C superflip
- とらのあな(冊子版)
- BOOK☆WALKER(電子版)
ダウンロード
- サンプル
- 素数のページ+αを抜粋しています
- Malleus CTF Pwn電子版
- 本書の購入者はPDF版をダウンロードできます
- ソースコード
- 本書に記載の問題のソースコードや攻略スクリプトです
教材
本書で扱う問題はDockerで動かせるようにしています。 Dockerをインストールして
docker run --rm -it -p 10081:80 -p 10001-10012:10001-10012 kusanok/ctfpwn:2
を実行後、 http://localhost:10081 を開いてください。 このコマンドを実行している間だけ、スコアサーバーと問題サーバーが動作します。
何らかの理由で上記のコマンドによるDocker Hubからの導入ができない場合には、下記のGitHubリポジトリもしくはアーカイブからファイルをダウンロードしてビルドしてください。
詳細
- 頒布価格
- 1,000 円くらい
- サイズ
- B5
- ページ数
- 128ページ
改訂履歴
- 第2版
- glibc 2.28 - glibc 2.31に対応
- House of Orangeの解説を追加
- File stream oriented programmingの解説を追加
- Hose of Corrosionの解説を追加
正誤表
第2版
ページ | 誤 | 正 | 備考 |
---|---|---|---|
7 | >docker run --rm -it -p 10080:80 -p 10001-10012:10001-10012 kusanok/ctfpwn:2 | >docker run --rm -it -p 10081:80 -p 10001-10012:10001-10012 kusanok/ctfpwn:2 | 10080ポートのアクセスがunsafe portとしてブラウザにブロックされるようになったため、代わりに10081ポートを使用してください。 |
7 | >docker run --rm -it -p 10080:80 -p 10001-10012:10001-10012 ctfpwn | >docker run --rm -it -p 10081:80 -p 10001-10012:10001-10012 ctfpwn | |
7 | ブラウザで http://localhost:10080/ を開き、 | ブラウザで http://localhost:10081/ を開き、 | |
46 | 次に、0x12 - 0x34 + 0x100 = 0xde文字を出力して0x134を次のアドレスに書き込みます。 | 次に、0x12 - 0x34 + 0x100 = 0xde文字を出力して0x112を次のアドレスに書き込みます。 | |
49 | rot13を攻撃するために、pwntoolsのpwnlib.fmtstr モジュールが利用できないという記述 |
(削除) |
執筆時点で、アドレスをバッファの後ろに置くように
Improve format string generator by bennofs · Pull Request #1216 · Gallopsled/pwntools 実装例: rot13_pwntools.py
|
初版
ページ | 誤 | 正 | 備考 |
---|---|---|---|
5 | >docker run --rm -it -p 10080:80 -p 10001-10007:10001-10007 kusanok/ctfpwn | >docker run --rm -it -p 10080:80 -p 10001-10007:10001-10007 kusanok/ctfpwn:1 | 間違いというわけではないのですが、そのうちタグを指定しなかった場合は最新版になるようにしようと思っています。GitHubリポジトリから取得する場合は、タグv1.0 をチェックアウトしてください。 |
56 | fd_nextsize 0x8 双方向連結リストのサイズが自分より大きい要素 | fd_nextsize 0x8 双方向連結リストのサイズが自分より小さい要素 | |
56 | bk_nextsize 0x8 双方向連結リストのサイズが自分より小さい要素 | bk_nextsize 0x8 双方向連結リストのサイズが自分より大きい要素 | |
66 | fastbinからchunkを取り外すとき、chunkのサイズがこのfastbinに格納されるべきサイズである | (削除) | 通常のfree 関数の呼び出し時、この条件は確認されていませんでした。 |
初版をお持ちの方も第2版の電子版をダウンロードできるので、ご利用ください。