日記

日本語の勉強のためのブログ

【ksnctf】Q28 Lo-Tech Cipherを解いた

1. 問題

問題へのリンクはこちら

2枚の画像が入ったZIPファイルが与えられる。画像は2枚とも、砂嵐のようにランダムな点が打たれている白黒画像である。

2. 思考内容

2.1 画像の意味

与えられた画像を見てすぐ、「重ねたら何か出てくるのでは」と思った。イメージとしては、以下に示す参考動画のような感じである。


www.youtube.com

2.2 重ねてみる

GIMPを用いて、2枚の画像を重ねたところ、次に示す図1のようになった。予想どおり文字列が表示されている。

f:id:kalax:20220405153853p:plain
図1. 2枚の画像を重ねた様子

背景のモザイクのせいで何と書かれているか読めなかったが、(Ctrl+マウスホイールで)表示サイズを縮小したらどうにか読めるようになった(図2)。The last share is hidden in the ZIPと読むことができる。

f:id:kalax:20220405153921p:plain
図2. 2枚の画像を重ね、表示サイズを縮小した状態

2.3 英文の意味

正直どういう意味かわからなかったが、shareというのは与えられた画像share1.pngshare2.pngのことだろうか。するとこの英文の意味は、「ZIPファイルを詳しく調べれば3枚目の画像が手に入るよ」ということだと思う。

2.4 ZIPファイルを調べる

まず、与えられたZIPファイルをバイナリエディタで表示すれば何か出てくるのではと考え、hexdump -C secret.zip | grep shareなどと調べてみたが、特に何も得られなかった。
(ちなみにこの時点では気づいていないが、バイナリ表示したファイルの先頭に.PNG(89 50 4e 47)と書かれていた。なぜ気づかなかったのか)

次にファイル形式を調べようとfile secret.zipを実行したところ、以下の出力が得られた。

secret.zip: PNG image data, 640 x 480, 8-bit/color RGBA, non-interlaced

つまりsecret.zipは、実はPNGファイルであるという。これに従いsecret.zipsecret.pngに名前変更したところ、3枚目の白黒砂嵐画像を得ることができた。

その後2.2項と同様に、3枚の画像を重ねたところ、フラグ文字列が得られた。