自力では手も足も出ませんでした.
以下のWriteupを参考にしました.
問題
ディスクイメージが与えられます.
中が壊れているので,修復してフラグをゲットしてほしいとのこと.
解く手順
- ディスクイメージのsuper-blockを書き換える.
-
debugfs
でJPEGファイルを取り出す.
ディスクイメージのsuper-blockを書き換える.
file
でみてみると,全体としてはext2で,中にJPEGのデータが大量に存在します.
binwalk
でJPEGを取り出しても,意味のない画像ばかりが抽出されます.
$ binwalk -D "jpeg:jpg" ext-super-magic.img
ヒントに従って,fsck
を実行します.
ext2なので,fsck.ext2
になります.
しかし,スーパーブロックが壊れている旨が表示されます.
e2fsck
を試すように言われますが,意味なし.
スーパーブロックが0埋めされているために,ext2だと認識できていないらしいです.
ext2では,スーパーブロックのoffset 56 にマジックナンバー 0xef53 が入ります.
したがって,バイナリエディタでイメージファイルを編集します.
Macを使用していたので,Hex Friendを使いました.
スーパーブロック自体のoffsetは1024なので,1024 + 56 = 1080 番目から2バイト分を書き換えます.
再度file
で見てみると,ext2のイメージだと認識してくれました.
debugfs
でJPEGファイルを取り出す.
最後のヒントに従って,debugfs
を実行します.
よく見ると,flag.jpg
というファイルがあることがわかるので,取り出します.
$ debugfs ext-super-magic.img
debugfs: ls
(略)
debugfs: dump flag.jpg flag.jpg
debugfs: q
flag.jpg
を開くと,上部に小さくフラグが書かれています.