Writeup memo Pretty Raw (Forensics150) [SharifCTF 7]
SharifCTF 7の Pretty Raw (Forensics150) のWriteupメモ
- 問題文
Pretty Raw
What is this file?
http://ctf.sharif.edu/ctf7/api/download/17
- ファイルを確認
$ file pretty_raw pretty_raw: data
$ strings pretty_raw --------------------------- IHDR PLTELiq 1yy> (略) )+0IDBVG?KMQSajO{ IDATx 8/Sd (略) \70S 0r\o IEND ---------------------------
IHDRとかIDATとかIENDとかあるのでPNGファイルが隠れているものと想定。
- binwalkで確認。
$ binwalk pretty_raw DECIMAL HEXADECIMAL DESCRIPTION -------------------------------------------------------------------------------- 116254 0x1C61E PNG image, 1434 x 1060, 8-bit colormap, non-interlaced
- foremostでファイルを抜き出し。
$ foremost pretty_raw Processing: pretty_raw |*|
output ディレクトリにファイルが生成される。
$ find output/ output/ output/audit.txt output/png output/png/00000227.png
⇒PNGファイル抜き出し。
- ファイルを見てみる。
flag.pngをexiftoolで見た結果の画像ファイル?
1570×74ピクセルのflag.pngというのがflagらしい。横長い画像。
foremostで出てきたPNGファイルがflagというわけではない。
- 問題ファイル「pretty_raw」をバイナリエディタで眺める。
下の方のノイジーなのが、PNGファイルで、上の方は黒(00)が多い。 何かしら前半のデータから、画像を生成するものと想定する。
- hexdumpで眺める。
$ hexdump -v pretty_raw 0000000 0000 0000 0000 0000 0000 0000 0000 0000 0000010 0000 0000 0000 0000 0000 0000 0000 0000 0000020 0000 0000 0000 0000 0000 0000 0000 0000 0000030 0000 0000 0000 0000 0000 0000 0000 0000 0000040 0000 0000 0000 0000 0000 0000 0000 0000 (略) 0002570 0000 0000 0000 0000 0000 0000 061b 1e1e 0002580 1e1e 141e 0000 0000 0000 0000 0000 0000 0002590 0000 0000 0000 0000 0000 1d08 1e06 1e1e 00025a0 1e1e 1e1e 1e1e 1e1e 0001 0000 0000 0000 00025b0 0000 0000 0000 0000 0000 0700 0302 1e09 (略)
なんとなく画像に見えてきたので(?)、PNGファイルのあった 116254 より前を切り出し。
$ dd if=pretty_raw count=116253 bs=1 of=pretty_raw_first.bin 116253+0 レコード入力 116253+0 レコード出力 116253 bytes (116 kB, 114 KiB) copied, 0.217263 s, 535 kB/s
- 文字数をカウント
hexdumpの出力結果のアドレス部・空白・改行を除いてカウント。
hexdump -v pretty_raw_first.bin | cut -c8- | tr -d '\n' | tr -d ' ' | wc 0 1 232508
⇒ 232508文字
$ python >>> 232508/74 3142 >>> 3142/2 1571 >>>
3140×74 (1570×2×74)となりそう。2文字=1ピクセルの画像。
- 3140行毎に改行入れたテキストの出力
hexdump -v pretty_raw_first.bin | cut -c8- | tr -d '\n' | tr -d ' ' | nkf -f3140-0 > flag.txt
テキストエディタで、flag.txt を見てみる。
(長い)
- ImageMagickでテキスト(flag.txt)を画像(flag.png)に画像にしてみる。
$ convert -pointsize 2 label:@flag.txt flag.png
※ ImageMagickの/etc/ImageMagick-6/policy.xmlで一時的に@を許可して実行しています。
$ cat -n /etc/ImageMagick-6/policy.xml ---------------------------------------------------------------------- 68 <!-- policy domain="path" rights="none" pattern="@*" /> ----------------------------------------------------------------------
- flag
SharifCTF{100ae53903cbb68ab523c8e858034988}