読者です 読者をやめる 読者になる 読者になる

TDU CTF 2014 Satellite in ConoHa に参加してきた

Nomuken氏の主催するTDU CTFに参加してきた。connpass.com

CTFに参加するのは前回に続いて2度目(前々回を含めるなら3回目)で、外部の人もいるところに行くのは初めてである。
会場のConoHa、すごく綺麗なオフィスだった。

結果から言うと、1670点で4位だった。まあ実際にはプロの方々が以下のかっこいいフラグを入れていたようなのでもうちょい下ですが、まああまり経験ない身としては健闘したんじゃないかと。

TDU{I_Am_Beginner} -5000pt
TDU{I_Am_Not_Beginner} -1000pt 
TDU{I_Am_Not_Pro} -500pt 
TDU{I_Am_Pro} -100pt

write-upって書いたことないんだけどとりあえず書けるだけ書いてみる。

Easy SQLi test

普通のSQLiっぽかったんだが、最初は「' OR 1=1;--」でやってたらシングルクォーテーションがエスケープされててダブルクォーテーションじゃないといけないということが気がつかなくて時間がかかった。
ちなみに後から知ったのだが、発行されるSQL文の後ろに「LIMIT 5」が含まれているので後ろをコメントアウトしないと一つ目のフラグが出てこないらしい。
その後はUNIONでsqlite_masterだかと結合して表示、flagTable(だっけ?)にある2つめのフラグをsubmit。
それ以降は忘れた。

String Compare

とりあえずStringsに噛ませたら、「MinamiKotori」「TDU{%s_is_very_cutie}」といういかにもな文字列が並んでいたので、とりあえず組み合わせてみたら通った。

PhoneApps


まあ実際親方というかWindows Phoneな感じはしていた。

とりあえずアーカイブなのでzipとして開ける。すると画像とxmlとdllが出てくる。
そこで、やはりWindows Phoneで.Netだろうとあたりをつけて、PivotApp1.dllをILSpy(事前の告知メールで用意しておくとよいソフトとして挙げられていた)で開く。
とりあえずViewに直接書いてある可能性から調べる。
mainpage.xamlを見ると、次のような部分が見つかる。
f:id:twinkfrag:20150331183230p:plain

直接フラグは書いてなさそうだが、「Find a flag!」付近にPathタグが見つかる。
これを、適当なWPFアプリケーションに貼り付けて描画させることでフラグが得られる。
f:id:twinkfrag:20150331183158p:plain

起きているか

みたいな問題名のやつ。question.pcapが渡されるがWireSharkで見ても分からないやつ。
最初分からなかったが後半になってバイナリ問題だからとStringsで見直したら

TDU{TDUCTF}  //this is not a flg
TDU{HANYABUSHI} it's a not valid
TDU{HANYABUSHI} it's a not valid
TDU{ICHIIYUI} // it's a not flag
TDU
TDU{ICHIIYUI} // it's a not flag
TDU
TDU{NONOHARA} // it's a not flag
{PC
TDU{NONOHARA} // it's a not flag
{PC
TDU{HINATA} // this is not a flg
AP_
TDU{HINATA} // this is not a flg
AP_
TDU{AIKAWA} // this is not a flg
BLO
TDU{AIKAWA} // this is not a flg
BLO
TDU{OKANOKEI}//this is not a flg
CK_
TDU{OKANOKEI}//this is not a flg
CK_
TDU{OKAASAN} //this is not a flg
PAD
TDU{OKAASAN} //this is not a flg
PAD
TDU{YUYUSHIKI} // it's not a flg
DIN
TDU{YUYUSHIKI} // it's not a flg
DIN
I LOVE YUYUSHIKI! YUYUSHIKI!
I LOVE YUYUSHIKI! YUYUSHIKI!
KIMIHA TOTEMO ERAI! YOKU YONDA!

こんな感じに出てきたので、ばらけてるフラグを組み合わせて出した。
前述のStringsが3文字以上のみの文字列を認識することは知っていたので最後の2文字だけ補って、
TDU{PCAP_BLOCK_PADDING}
を得る。

Evidence

RawImageというファイルが渡された。
万能解凍ツールである7zipさんに噛ませると1ディレクトリに2ファイルだけがあったがフラグは見当たらなかった。
そこでFTK Imagerに噛ませると、削除済みファイルとして!oc.pdfというファイルが出てきてフラグを得る。

我が同胞に告ぐ

vim is so awesome


追記:2015/04/02
なんか勘違いしてたやつがあったので消しました


他にも思い出したら追記する。

感想

なんか気付いたら結構得点できていて後でびっくりした。
もうそろそろ初心者名乗れなくなってしまった感あるので次回は経験者的な枠かなという感じではある。
だんだんCTFが楽しくなってきたので今度はもっと他のCTFにも参加してみようと思う。