Edited at

CTF Stegano Tutorial

More than 3 years have passed since last update.

Steganoのチュートリアルをやってみた。

今回やってみたチュートリアル

ctf tutorial: file carving

まずは画像を16進数でダンプしてみます。

このチュートリアルではxxdコマンドを使って16進ダンプしてた。

バイナリエディタで開いてもいいと思う。

$ xxd carving-ex.jpg | less

最初の方にJFIFタグ、画像の情報とかが書いてます。

00000000: ffd8 ffe0 0010 4a46 4946 0001 0100 0001  ......JFIF......

00000010: 0001 0000 fffe 003b 4352 4541 544f 523a .......;CREATOR:
00000020: 2067 642d 6a70 6567 2076 312e 3020 2875 gd-jpeg v1.0 (u
00000030: 7369 6e67 2049 4a47 204a 5045 4720 7636 sing IJG JPEG v6
00000040: 3229 2c20 7175 616c 6974 7920 3d20 3935 2), quality = 95
00000050: 0aff db00 4300 0201 0101 0101 0201 0101 ....C...........

で、最後の方を見てみると0x00008e20の行にffd9とある(文字に直すとPK)。

これはzipの作者Phil Katzのイニシャルらしい。

さらに0xffd9というのはJPEGファイルのEOI(End Of Image)を表しており、これより後の情報は無視されるらしい。

00008e00: 594a e0b7 27d6 8a29 5900 36b8 ca9b 4311  YJ..'..)Y.6...C.

00008e10: fdea 2db5 48e6 89a3 6c9c 7b51 4536 9075 ..-.H...l.{QE6.u
00008e20: 3fff d950 4b03 0414 0000 0008 0088 6c0c ?..PK.........l.
00008e30: 3f18 f066 802d 0000 0032 0000 000a 001c ?..f.-...2......
00008e40: 0061 6e73 7765 722e 7478 7455 5409 0003 .answer.txtUT...
00008e50: 9f72 454e 126d 454e 7578 0b00 0104 8813 .rEN.mENux......

これらの情報から、0xffd9以降にzipファイルがくっついていると考える。

あとは画像とzipを分割してあげれば良い。

$ printf '%d\n' 0x00008e23 # ddコマンドのskipオプションは10進数しか受け取れないので変換

36387
$ dd if=carving-ex.jpg bs=1 skip=36387 of=foo.zip
215+0 records in
215+0 records out
215 bytes transferred in 0.000835 secs (257503 bytes/sec)

これで生成されたfoo.zipを解凍すれば、answer.txtが見つかる。


answer.txt

This is just an example; there is no answer here.