問題について
「Let’s extract files from the container. 」ということで、ファイルが1個提供される。
コンテナから取り出せということで、このファイルの中をバラして flag を得るようだということがわかる。
調査
まずは、与えられたファイルの中身を調べてみる。
こんなときは binwalk にお願いする。
$ binwalk e35860e49ca3fa367e456207ebc9ff2f_containers
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
16 0x10 PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
107 0x6B Zlib compressed data, compressed
738 0x2E2 PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
829 0x33D Zlib compressed data, compressed
1334 0x536 PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
1425 0x591 Zlib compressed data, compressed
1914 0x77A PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
2005 0x7D5 Zlib compressed data, compressed
2856 0xB28 PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
2947 0xB83 Zlib compressed data, compressed
3666 0xE52 PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
3757 0xEAD Zlib compressed data, compressed
4354 0x1102 PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
4445 0x115D Zlib compressed data, compressed
5156 0x1424 PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
5247 0x147F Zlib compressed data, compressed
5846 0x16D6 PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
5937 0x1731 Zlib compressed data, compressed
6722 0x1A42 PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
6813 0x1A9D Zlib compressed data, compressed
7757 0x1E4D PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
7848 0x1EA8 Zlib compressed data, compressed
8338 0x2092 PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
8429 0x20ED Zlib compressed data, compressed
9243 0x241B PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
9334 0x2476 Zlib compressed data, compressed
10319 0x284F PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
10410 0x28AA Zlib compressed data, compressed
11042 0x2B22 PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
11133 0x2B7D Zlib compressed data, compressed
12118 0x2F56 PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
12209 0x2FB1 Zlib compressed data, compressed
12809 0x3209 PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
12900 0x3264 Zlib compressed data, compressed
13845 0x3615 PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
13936 0x3670 Zlib compressed data, compressed
14592 0x3900 PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
14683 0x395B Zlib compressed data, compressed
15535 0x3CAF PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
15626 0x3D0A Zlib compressed data, compressed
16440 0x4038 PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
16531 0x4093 Zlib compressed data, compressed
17313 0x43A1 PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
17404 0x43FC Zlib compressed data, compressed
18218 0x472A PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
18309 0x4785 Zlib compressed data, compressed
19123 0x4AB3 PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
19214 0x4B0E Zlib compressed data, compressed
19926 0x4DD6 PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
20017 0x4E31 Zlib compressed data, compressed
20869 0x5185 PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
20960 0x51E0 Zlib compressed data, compressed
21742 0x54EE PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
21833 0x5549 Zlib compressed data, compressed
22465 0x57C1 PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
22556 0x581C Zlib compressed data, compressed
23408 0x5B70 PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
23499 0x5BCB Zlib compressed data, compressed
23989 0x5DB5 PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
24080 0x5E10 Zlib compressed data, compressed
24810 0x60EA PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
24901 0x6145 Zlib compressed data, compressed
25753 0x6499 PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
25844 0x64F4 Zlib compressed data, compressed
26788 0x68A4 PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
26879 0x68FF Zlib compressed data, compressed
27599 0x6BCF PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
27690 0x6C2A Zlib compressed data, compressed
28504 0x6F58 PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
28595 0x6FB3 Zlib compressed data, compressed
29085 0x719D PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
29176 0x71F8 Zlib compressed data, compressed
29808 0x7470 PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
29899 0x74CB Zlib compressed data, compressed
30844 0x787C PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
30935 0x78D7 Zlib compressed data, compressed
31524 0x7B24 PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
31615 0x7B7F Zlib compressed data, compressed
ということで、いくつかの PNGファイルが入っていることがわかる。
分解
引き続き binwalk を使って取り出す。
$ binwalk --dd '.*' e35860e49ca3fa367e456207ebc9ff2f_containers
(略)
先ほどと同様な表示がされるが、先ほどとの違いは「_e35860e49ca3fa367e456207ebc9ff2f_containers.extracted」というフォルダに切り出したあとのファイルがすべて格納されている。
gnomeのファイラー(nautilus)などで確認すると、アルファベットの画像が入っていることがわかる。
flag の導き出し
抽出したファイル名は、ファイルの中のオフセットの位置が16進数になっている。
数値の若い順に拾ってみると「ctf・・・」と読めるので、それが flag だろうと踏んで、並び替えてみる。
手法は悩んだけど、40個ぐらいなので手動でスプレッドシートにアドレスと文字を転記してソートをかける。
ソートしたら、「特殊貼付け」の「転地して貼り付け」で横に並べる。
するとこんな感じ。
最後に転地した文字をコピー&ペーストして、邪魔なタブを除去して得られたflag
「」提出して終わりです。
余談
並び替えするときに、桁を合わせても nautilus の並び替えだと何故か上手くソートができず、上記手法にしました。
ImageMagick等で画像結合していくのも考えたけど悲鳴を上げる量ではなかったし、どのみち画像の文字を人が目で見て手で入力する必要がでてくるので、上記手法にしました。