にゃるにゃる

このブログに書かれている内容は CC BY-ND 4.0 の下に提供されています。

SECCON CTF 2014 Online Qualifications Write-up

f:id:owatax:20141207175601p:plain

2014/12/06 09:00:00 - 2014/12/07 17:00:00 (JST) に行われていた SECCON CTF 2014 Online Qualifications に、 チーム #saraowa で出ていて1,200点の143位でした。

以下に解いた順に Write-up を書きます。

Get the key [Network100]

pcap ファイルが与えられるので、中を見てみると、こんなパケットが:

f:id:owatax:20141207184617p:plain

怪しいので Follow TCP Stream で中を追ってみると、

GET /nw100/ HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: ja-JP,en-US;q=0.5
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
Accept-Encoding: gzip, deflate
Host: 133.242.224.21:6809
Authorization: Basic c2VjY29uMjAxNDpZb3VyQmF0dGxlRmllbGQ=
Connection: Keep-Alive
DNT: 1

なので、

% curl --user $(echo "c2VjY29uMjAxNDpZb3VyQmF0dGxlRmllbGQ=" | base64 -d) 133.242.224.21:6809/nw100/

とすると key.html が見えるので、その内容を submit .

Flag: SECCON{Basic_NW_Challenge_Done!}

Get from curious "FTP" server [Network300]

問題には FTP サーバの FQDN (ftpsv.quals.seccon.jp) が書かれており、 手で ftp コマンドを打つのも面倒くさいなー、と思ったので Cybarduck という クライアントで繋いでみると ...

f:id:owatax:20141207180450p:plain

(゚⊿゚) ...

Flag: SECCON{S0m3+im3_Pr0t0c0l_t411_4_1i3.}

Get the key.txt [Forensics100]

% file forensic100
forensic100: Linux rev 1.0 ext2 filesystem data

から key.txt を探す問題。

適当に xxd -g 1 forensic100 とかやって眺めてると key\d{1,3}\.txt みたいな文字列がたくさん出てきますが、 最後のほうに key.txt というのが出てきます。 そのまた後に SECCON{.*} のような文字列がたくさん出てきます。

「最後に key.txt って文字列があったし、最後にある SECCON{.*} を submit したらいけるんじゃね ?」と思い、 実際に submit してみるといけてしまいました。

Flag: SECCON{@]NL7n+-s75FrET]vU=7Z}

REA-JUU WATCH [Web200]

前回の LINE っぽい何かを思い出させる問題 ... 。

f:id:owatax:20141207180848p:plain

こんなページへのリンク (http://reajuu.pwn.seccon.jp/) が書かれており、 ポチポチやると最後にポイントが出てきます。

f:id:owatax:20141207181111p:plain

この ポイントが出てくるページ のソースを見てみると、

function finishpoint(){
    $.getJSON("/users/chk/14310", null, function(data){
        point = data.point;
        $("#finishpoint").text("あなたのポイントは" + point + "です。");
    });
}

とあるので、http://reajuu.pwn.seccon.jp//users/chk/1 にアクセスしてみると ... 。

{"username":"rea-juu","password":"way_t0_f1ag","point":99999}

このユーザのアカウント名とパスワードでログインして最後まで進むと、 選択肢にかかわらず最後に Flag を取れました。

Flag: SECCON{REA_JUU_Ji8A_NYAN}

Reverse it [Binary100]

とりあえず、16進数ダンプを見てみます。

そうして「どうやって解くんだろー」と思い、悩んでいると友人氏が

見た感じ 9d ff ~ 8d ffなので、ff d8 ~ ff d9 な感じにすると, JPEG が出てきそう

と言い、見てみると確かに末尾が JPEG の Magic number (ff d8) なので、ひっくり返してみます。

% xxd -p Reverseit | rev | tail -r | xxd -r -p > reverse.jpg; file reverse.jpg
> reverse.jpg: JPEG image data, JFIF standard 1.01

xxd-p はアドレスの表記をしない (16進数ダンプのみを表示)、-r は16進数ダンプをバイナリに戻すオプションですが、 xxd -p したものを元に戻す時には -r が必要です (付けないと大変なことになるので、是非試してみてください) 。

そして、開いてみると ...

f:id:owatax:20010022104102j:plain

Flag: SECCON{6in_tex7}

感想

Web やら binaly やら exploit やら QR やら、解けない問題が多くてとてもつらさがありました。 どの CTF でもだいたい上記の分野は解けていないので、強化していきたいです ... 。 (それでいうと NW 300 の問題は瞬殺出来たけどあんな解き方が出来ていいのか、うーん ...という感じです)

NW 200 の問題 (version2) も srv h2o.pwn.seccon.jp. と書いて合ったのを見て、srv => Server ! となり、 DNSSRV Record に結びつかなかったのがとても悔しかったです。 (h2o.pwn.seccon.jp という FQDN やら問題名やらで h2o/h2ohttp/2.0 なサーバが動いているんだろうな、 ということは推測できましたが、そもそも SRV レコードが何者か分からなかったのがとても ...)

問題を解いている間、ずっと Daydream café を聞いていてこころがぴょんぴょんしていたので、 それが解けなかった原因の 1 つかもしれません そんなわけない

f:id:owatax:20141207190425p:plain

© 2014 おわたん All Rights Reserved.