Pwn
別名: Pwnable, Binary Exploitation
脆弱性のあるプログラムが動いているサーバーに対して攻撃を行い、任意コード実行などでフラグを奪取するジャンル
例えばRTAで見る「無の取得を使って任意コード実行をする」もPwnの一例である
Pwnの用語で表現すると、「Use After Freeを利用して関数ポインタを上書きし、事前に用意したShellcodeに飛ばして任意コードを実行する」になる https://www.youtube.com/watch?v=XQFH3aKPY4g
バイナリの知識が必要
C言語のバイナリとして出題されることが多い
現実ではOSやブラウザ、サーバーや仮想マシンへの攻撃など広範囲にPwnの技術が適用できる
攻撃領域
User-land pwn
よく出題されるのはこれ
防御機構
攻撃手法
テクニック
Heap系
House of XXX系
ツール
Pwnのexploitを書く時に便利なライブラリ
簡単に通信処理をしたり、payloadを記述できたりする
gdb拡張
色々試して肌に合うのを見つけましょう
one_gadget
TODO
checksec
TODO
ROPgadget / rp++
TODO
各バージョンのlibcをダウンロードできるツール
libcに対応したldもダウンロードできる
アドレスからバージョンを特定できたりもする
バイナリの依存を変更するツール
バイナリを配布されたlibcとldで動かしたいときに便利
資料
ptr-yudaiさんが書いている中〜上級者がpwn(Binary Exploitation)を勉強するための資料
ptr-yudaiさんの記事
ptr-yudaiさんの記事
バージョンごとに使える攻撃が整理されていてありがたい
ここにないテクニックもある
Linux Kernelやglibcなどのソースコードを閲覧・検索できるサイト
制限されたshellcodeを書くときに便利かもしれない
inaz2さんが公開しているブログ
少し古いが、丁寧 + 圧倒的情報量
"Pwn"とは?
Pwnは元々ネトゲスラングで、ownの誤字からきている
読み方はぽーん、ぽうん、ぴゅーん、ぱわん、███など諸説ある(各々好きに読んでます)