Zuck3r’s Study

エンジニアではありません

picoCTF2019 : c0rrupt(Forensics)から得た知見まとめ

はじめに

今回は、c0rruptについて解こうと思って色々調べて得た知見についてまとめたいと思います。

本題

問題はこんな感じ。

f:id:Zuck3r:20191105171106p:plain
問題
Recoverとあるので修復せよという事らしい。取り敢えずxxdで16進数にダンプした結果のアタマとケツを確認してみた。
f:id:Zuck3r:20191105173127p:plain
アタマ
f:id:Zuck3r:20191105173208p:plain
ケツ
アタマの方ではRGB、ケツの方ではIENDを読み取ることが出来る。RGBと言えば、色のことだろうか。また、IEND バイナリ と検索してみた。すると、どうやらこれはPNGファイルのイメージ終端に付いてるもののようだ。以下にPNGのファイルフォーマットをザっとまとめてみた。
f:id:Zuck3r:20191105191149p:plain
pngのファイルフォーマット
この後、再び問題ファイルを見てみるとヘッダ、IHDRチャンク,IDATチャンク一か所が壊れていることが分かった。上にあるスクショを見れば分かると思います。今回は、Stirlingというバイナリエディタで書き換えることにしました。 以下の黄色のマーカの部分が違っていたので直しました。
f:id:Zuck3r:20191105232702p:plain
変更後

最後に

今回初めて、ファイルの構造を明確に意識して解きました。そういえば、以前pdfファイルを解析していた際にEOFと出てきたりして少しだけ調べていたことを思い出しました。これを機にjpegのファイル構造について調べ知ることが出来たので良かったです。時間があったら別の記事でザっとまとめておきたいと思います。