SECCON 2015 Online CTF writeup

yozakuraというチームで参加した。

6問解いた。

Fragment2

Decode me
fragment2.pcap

pcapを見てみると、TCPのパケットが1個。 srcportが80なのと、filterの条件がhttp2だったので、wiresharkのdecode as http2をするとhttp2のレスポンスデータが見れる。なにやらよくわからないバイナリのフィールドがあるので、適当にググッて見つけたhpack decoderにかけると、flagが出てくる。

gist49b8ad5c68adb302698e

Entry form

http://entryform.pwn.seccon.jp/register.cgi
( Do not use your real mail address.)
(登録情報に他人に知られたくないメールアドレスは使用しないでください)

メールアドレスとユーザー名を登録するフォームがある。 index pageにアクセスすると、register.cgi_bakというソースがあるのでそれを見る。 ソースにlogの中身がflagだと書かれている。 mail addressがshelexecにぶっこまれているので、ls(backdoor123.cgi)するとregister.cgi, register.cgi_bak, log, SECRETというファイル、ディレクトリがみれた。 cat log(backdoor123.cgi)するとパーミッションがない。 ls SECRETすると、backdoor123.cgiがあり、見るとcmdパラメータを渡して叩くとshellexecしてくれる(しかも権限もあるっぽい)。 cat log(backdoor123.cgi)するとflagが出てくる。

Exec dmesg

秘密のメッセージをLinuxのisoイメージの中から見つけてください。
image.zip

zipの中にtiny core linuxのisoイメージあり。 virtual box から起動してdmesgを打っても、applet not found。 x86 busybox binaryをwgetして(https://busybox.net/downloads/binaries/latest/)、./busybox dmesgしたらflagが出てくる。

Steganography 1

Find image files in the file
MrFusion.gpjb
Please input flag like this format-->SECCON{*** ** **** ****}

バイナリエディタで見てみると、画像ファイルがたくさん連結している。bzのビットマップ表示でファイルの境界を見つけて、magic numberとか見つけて切り出す。(bmp, jpeg, gifなど) すると、flagが出てくる。 (他の人のwriteup見たら、foremostコマンドが便利らしい)

Steganography 3

We can get desktop capture!
Read the secret message.
desktop_capture.png

デスクトップのキャプチャに成功した!
秘密のメッセージを読み取ってほしい
desktop_capture.png

バイナリエディタでelfバイナリが表示されているので、OCRに掛けてelfバイナリを作る。 実行すると、base64 textが出てくる。 base64 decodeすると、英語で塗りつぶせと出てくる。 画像のバイナリエディタの白いところを黒で塗りつぶすと、flagが出てくる。

面白い問題だった。 チームメンバ ponty と倒した。

4042

Unknown document is found in ancient ruins, in 2005.
Could you figure out what is written in the document?
no-network.txt

謎の文章が2005年に古代遺跡から発見された。
これは何を意味している?
no-network.txt

テキストは、0から7の数字が3093文字。 2005年→utf9。 0~7の数字→3bit binary。 3文字→9bit binary。 なのでutf9 textなんだとおもう。 rfcの通りにutf9からucs4へ変換させるとflag発見。

チームメンバtkkと倒した。

gist38bd9f07baa80a0e18a2