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

TERRY's Note

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

Steganography 1 - SECCON 2015 Online CTF

SECCON 2015 ONLINE CTF CTF Stegano

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を入手
やり終えた後に気づいたが、拡張子がヒントになっていた