Hackover CTF 2015 Writeup

この大会は2015/10/17 3:00(JST)~2015/10/18 15:00(JST)に開催されました。
今回も個人で参戦。結果は121点で160位でした。
参加チームは419チームいたようですが、もう少し解きたかった。
解けた問題を中心にWriteupとして書いておきます。

greetings (misc 1)

これは問題に書いてあるフラグを入れるだけ。

hackover15{ready2hack}

allyourbase (misc 20)

問題はこんな文字列。

SGVsbG8gbXkgZnJpZW5kLiBUaGlzIGlzIGJhc2U2NC4gQXgeW91IHNlZSwgaXQgaXMgYnJv
a2VuLiDYW4geW91IHJlY292ZXIgdGhlIGZvbGxvd2luZBmbGFnOioYWNrb3ZlcjE1e21pc
2FsaWduZWRCaXRzQnJlYWtCYXNlNjR9

とりあえずBASE64デコードしてみる。

Hello my friend. This is base64. Ax[ンHルYK]\ネ悍レル[笈6薮R&V6?W"F?f?ニ?匁A匈?險ackover15{misalignedBitsBreakBase64}

読めない箇所があるが推測できる。
何か別のコードで変換すれば、読める文字になったのかな?

hackover15{misalignedBitsBreakBase64}

pinkie-pie (forensic 50)

一見ピンク一色のpng形式の画像ファイルが与えられている。
まず、Stegsolve.jarでポチポチっとビット演算の結果を表示させる。

hackover15{pInKie_pIe_LoVeS_pArTy}

f:id:satou-y:20151024084714p:plain

hack-the-planet (web 50)

ログイン画面が表示されているが、SQLインジェクションでは解けなそう。
いろいろ試してみたが、BODYでなくHEADを使うというメッセージが表示されている。
あまり自分には知識がなかったが、「HEAD」命令というのがあるということがわかった。
そこで、Fiddlerで「HEAD」でログイン画面のURLにリクエストを投げる。
すると、レスポンスで以下のデータが返ってきた。

X-Hackers-Kate-Libby: make it my first-born!

これをヘッダに入れて、リクエストするが、うまくいかない。
どうするかいろいろ考えているうちに、これは有名なメッセージではないかとググってみたら、こんなやりとりがされているサイトがあった。
http://www.imdb.com/title/tt0113243/quotes

Dade Murphy: And if I win?
Kate Libby: Make it my first-born!

・・ということでリクエストヘッダに以下の情報を入れて、リクエストを投げてみる。

X-Hackers-Dade-Murphy: And if I win?

今度は、以下のデータが返ってきた。

X-Hackers-The-Five-Most-Used-Passwords-Are: password,secret,love,god,sex

やっと手がかりが出てきた。password,secret,love,god,sex をパスワード欄に入れてログインしたら、フラグが表示された。

hackover15{Thepoolontheroofnusthavealeak}

simplepassword (misc 100)

これは結局得点できなかったが、途中のステージまで解いたので、わかったところまで書いておく。
ステージタイプの問題で、最終ステージまで解かないと得点にならないものだった。

ステージ1

Challenge 0x00 -- "insecure"
--------------
PASSWORD:

これで何を答えたらよいかわからなかったが、ふとよく使用されるパスワードかと思っていろいろ入れてみた。
最終的には http://www.imdb.com/title/tt0113243/quotes でアタリのパスワードを見つけた。

secret

ステージ2

Challenge 0x01 -- "ET TU BRVTE?"
--------------
PASSWORD:

試しに love と入れたら、以下のように表示された。

>>>>>: mpwf
access denied. Expected: Ubf5SppEpiWp

1文字シフトのシーザー暗号の問題だとわかったので、期待する文字列から元に戻す。

Tae4RooDohVo

ステージ3

Challenge 0x02 -- "All your base are belong to 0x"
--------------
Hash: /x54/x68/x31/x73/x42/x65/x56/x65/x72/x72/x72/x79/x48/x34/x63/x6b/x79

これはASCIIコードとして文字に変換する。

Th1sBeVerrryH4cky

ステージ4

Challenge 0x03 -- "Numbers Again"
--------------
Hash: 072 048 119 050 099 048 117 110 116 033 049 033 050 033 051 033 072 069 072 069

ステージ3と同様の問題。10進数でASCIIコードとして文字に変換する。

H0w2c0unt!1!2!3!HEHE

ステージ5

Challenge 0x04 -- "Turing Complete"
--------------
-[------->+<]>-.--[-->+++<]>.[--->+<]>---.---[->++++<]>.------------.---.--[--->+<]>-.[-->+++++++<]>.[----->++<]>+.--[--->+<]>--..++++.--------.+++.--------------.-[--->+<]>-.-[--->++<]>-.++++++++++.+[---->+<]>+++.++[-->+++<]>.++++.[->++<]>-.++++++++.-------.-----------.+++++.+++.--.+++++.-[->+++++<]>..

これが分からなかった。モールス信号なのかとか、Turing Completeとかから調べてみたが、ダメだった。この解法を早く知りたい。