TERRY's Note

CTF関連、解いた問題、勉強の記録などなど

Steganography 1 - SECCON 2015 Online CTF

Steganography問題の練習をしたのでメモ
今回はSECCON 2015 ONLINE CTFのSteganography1を解いた

内容はここに公開されている
github.com


SECCONの他の問題も解いたらあげるかもしれない

問題文

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

問題のファイルはここからダウンロードできた

binwalkやバイナリエディタで見てみると、いくつもの画像ファイルが連結されていることが分かった

これはABCTFでやった問題と同じ方法で解けるぞ!とテンションが上がる
埋め込まれたファイルはforemostコマンドで分割出来るので、実際にやってみる

$ foremost MrFusion.gpjb

出てきたoutputを見てみると合計12枚の画像ファイルが出現
文字らしきものが書いてあるがよく分からない
数字とアルファベットが書いてあるものがあるが、下のようによく分からない画像もあった
f:id:T3RRY:20160802170756p:plain

もういちどバイナリエディタで調べてみる
確認できた画像ファイルは15枚
foremostによる出力が3枚足りなかったことに気づく

今回埋め込まれている画像の種類は、PNG,JPEG,BMP,GIFの4種類で
それぞれのヘッダの先頭に来るバイナリ(マジックナンバーと呼ばれるもの)は以下の通り

PNG : 89 50 4E 47
JPEG: FF D8
BMP : 42 4D
GIF : 47 49 46 38

ここにもっと詳しく書いてある
qiita.com

何故かは分からないが、BMP形式のファイルがforemostで上手く切り出せていなかった……

これぐらいなら自分でやれそうだと決意

上記のバイナリが出現するまでの範囲で切り取って、1つずつ復元していく
多分もっと上手いやり方があるのだろうが、くそざこなので仕方ない
f:id:T3RRY:20160802172016j:plain

結果画像を上手く復元できた
そこから画像に書いてある文字を読み取って、FLAGを入手
やり終えた後に気づいたが、拡張子がヒントになっていた