SECCON 2015 Online CTF Writeup
SECCON 2015 Online CTFに参加したので、解いた問題のwriteup.
以下の問題について書いた.
- Agenda
- SECCON WARS 2015 (Stegano 100pts)
- Reverse-Engineering Android APK 1 (Binary 100pts)
- Steganography 1 (Stegano 100pts)
- Steganography 2 (Stegano 100pts)
- Steganography 3 (Stegano 100pts)
- Last Challenge (Thank you for playing) (Exercises 50pts)
SECCON WARS 2015 (Stegano 100pts)
Youtubeにアップロードされている動画からflagを探す.
動画を見ると,去年も見たようなSTAR WARS風の動画が,QRコードでマスクされているものだった.
瞬時に方針が定まる.
※過去にTDUCTFで似た問題を作成したから⇒TDU CTF:運営として参加しました
当時作ったソルバを流用(先述の記事に乗ってるやつ).
前を遮るSECCONの文字が落ち着いた,映像の中央部を1000フレームほど切り出して処理する.
一度でも閾値を超えて明るくなったピクセルを白,その他を黒といった具合に処理すると,ぼやけた感じのQRコードが現れるので.向きや色の調整をして読み取るとflag.
Flag : SECCON{TH3F0RC3AVVAK3N53P7}
Reverse-Engineering Android APK 1 (Binary 100pts)
じゃんけんに1000回連続で勝ち続けよ
rps.apk
Androidのアプリが降ってくるので,即デコンパイルWebサービスに投げる.
javaのコードにデコンパイルされるので,処理を追う.
じゃんけんに勝つとカウントアップされ,1000回連続で勝利した時点で特定の処理が行われてflagが出力される仕組みだった.
flag生成処理の途中にDLLの関数を呼んでいる部分がある.
幸いなことに,各種プラットフォーム用のライブラリが用意されていたので,IDAFreeで開いてみた.
ただ単に7を返すだけの関数であった.
よって,(1000+7)*107の結果がflagである.
Flag : SECCON{107749}
Steganography 1 (Stegano 100pts)
Find image files in the file
MrFusion.gpjb
Please input flag like this format-->SECCON{*** ** **** ****}
There is no bonus in this question
MrFusionなるGIFファイルをもらう.
MrFusionとは映画BTTFに登場する,あらゆるごみから電力を作り出す融合炉のこと.
きっといろんなものが混ざってるだろうなーと想像してバイナリエディタへ投入.
予想通り,様々なファイルが混ざっていた.
画像ファイルと思わしき部分をいくつか取り出してみると,flagの一部の画像だった.画像を取り出すのにはスペシャルねこまんま57号が便利.
緑色の7セグメントLED,日付のような文字列,MrFusion...
これらのヒントがあれば,flagすべての文字を見つける必要はもはやない.
BTTFで彼らが行った未来の(現実では過去になってしまったが)日時は,2015年10月21日午後7時28分である.
これを,タイムサーキットの表示と同じように,flagのフォーマットに打ち込んでやればOK.
(2が見つからなかった...)
Flag : SECCON{OCT 21 2015 0728}
Steganography 2 (Stegano 100pts)
ファイルからflagをさがせ.
sunrise.zip
zipでpngの写真がもらえる.
Exif情報は残っているが,特にflagのような情報はなし.
ただ,バイナリエディタに突っ込むと,写真には見られないような規則的なパターンが見つかった.
はじめは,何か別のバイナリが埋め込まれているのではと思ったが,該当するパターンのものは覚えがないし,ググっても出て来ない.
しばらく悩んでいたが,最後のIDATチャンクだけが長く,本来の写真の末尾に余計なデータがくっついていること,規則的なパターンは,色の変化のない画像をpngにした時にもみられることを考えて,写真の領域外にflagがあるとにらんだ.
IHDRの縦の長さを書き換えると,flagが出現した.
Flag : SECCON{Metadata_modification_is_used_for_information_hiding.}
Steganography 3 (Stegano 100pts)
デスクトップのキャプチャに成功した!
秘密のメッセージを読み取ってほしい
desktop_capture.png
バイナリエディタとブラウザとmspaintを開いたデスクトップのスクショがもらえる.
バイナリエディタでは,実行ファイル(ELF)と思わしきものが開かれている.
ブラウザに表示されているWebページには,以下のような見出しがついている.
“This problem can be solved by pre-school children....(略)”
文字を記号として認識せず,ただの図形として見ることで,幼稚園児のほうが解きやすいといわれる問題がある.
特に,数字の丸の部分(6の下半分とか0とか)の数を数式のように表した問題はよく見かける.
そして,デスクトップに開かれたmspaint...
これは,文字の丸く囲まれた領域の並びがflagを形作るに違いない.
mspaintで,バイナリエディタの白い部分を塗りつぶせばflagが手に入る.
Flag : SECCON{the_hidden_message_ever}
Last Challenge (Thank you for playing) (Exercises 50pts)
ex1
Cipher:PXFR}QIVTMSZCNDKUWAGJB{LHYEO
Plain: ABCDEFGHIJKLMNOPQRSTUVWXYZ{}ex2
Cipher:EV}ZZD{DWZRA}FFDNFGQO
Plain: {HELLOWORLDSECCONCTF}quiz
Cipher:A}FFDNEA}}HDJN}LGH}PWO
Plain: ??????????????????????There is no bonus in this question
換字式暗号である.ex1が対応表そのものなので,
それに従って変換すればflag
Flag : SECCON{SEEYOUNEXTYEAR}