CodeGate2012 Vuln200のwriteupを読んでみる

CodeGate2012の復習とかやっていきます。

今回は出場者向けの内部ネットワーク内で稼働しているWebアプリケーションが対象なので、いつも参考にさせていただいているwriteupのブログを理解するまで読んで、記録しておく感じになります。(自分では部分的にも解いていません)

今回は画像をアップロードするWEBアプリケーションみたいです。

画像を選択して”Upload”ボタンを押すだけ。今回はフォームのバリデーションに脆弱性があります。.jpgの拡張子をチェックしていますが、.の後にjpgさえあればバリデーションを通過してしまいます。つまりhoge.jpg.phpといったコードをアップロードしたりできるみたいです。こういった問題は、問題を解くだけでなく、開発者的にも勉強になりますね。今回ネタさえ解れば、結構すぐに解けてしまう問題みたいなので、様々なwriteupにある手法を全てチェックしていきます。

読ませていただいたwriteup

  • http://leetmore.ctf.su/wp/codegate-2012-quals-vuln-200/
  • http://eindbazen.net/2012/02/codegate2012-vuln-200/

ここで次のコードをアップロードし、実行してみます

これを実行させることによって、任意のパスのファイルやディレクトリの一覧やソースコード取得できてしまいます。$_GET[“d”]とか$_GET[“f”]に自分が見たいディレクトリやファイルのパスを入れて実行してみます。

php scandir()メソッド(引数のディレクトリの中身の情報を出力)

php print_r()メソッド(配列を一気に出力)

php highright_file()メソッド(ソースコードを実行せずにテキストとして出力)

どうやって特定したのかは不明ですが、対象システムはWindows Serverであるようなので(特定できなくても最低限LinuxとWindowsServerどっちも試してもそこまで時間はかからないと思いますが)以下のURLにアクセスします。$_GET[“d”]の値としてc:usersを入れているところに注目です。

http://1.234.41.9/1olOI01/images/c6f8…4d81.php?d=c:users

これによってシステム内のユーザディレクトリ一覧が取得できますね。出力されるのが以下です。

codegate2とtestが怪しいですね。見てみます。

http://1.234.41.9/1olOI01/images/c6f8…4d81.php?d=c:userscodegate2desktop

おー!Codegate 2012 Key.txtというファイルを発見!最後に

http://1.234.41.9/1olOI01/images/c6f8…4d81.php?f=c:userscodegate2desktopCodegate%202012%20Key.txt

今度は$_GET[“f”]としてファイルの内容を出力するようにURLを調整しています。

これでkey取得

答えは 16b7a4c5162d4dee6a0a6286cd475dfb となります。

これが自分が読んだ中で最もシンプルな解決方法でした。

 

php eval()メソッド

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です