PHPのメモリ枯渇を突き、セッションCookieからポインタを盗み出す
Steal My Bitcoin CTF PoC
「Steal My Bitcoin」CTFの解法を再現する単一ファイルのPythonスクリプト。multipartアップロードでPHPを128MiBのメモリ上限まで追い込み、アップロード進捗解析の途中で残る古い状態を利用して、再利用されたワーカーのセッションCookieにヒープとコードのアドレスを漏らす。両アドレスが揃えば、偽造したHashTableを最終リクエストで送り込み、後片付けの経路からzif_systemを呼び出してコマンドを実行する。最大20リクエスト、標準ライブラリのみ。
ヒープの漏洩は偽造構造体をどこに置くかを教え、コードの漏洩は呼びたい関数が実際どこに住んでいるかを教えてくれる。以前のワーカーや以前の実行から得たアドレスは安全な代用にはならず、試すたびに失敗した。