ファイル chall.png
が与えられた。
このファイルをWindowsの「フォト」で開くと、以下の表示となった。
A file chall.png
was given.
This file looked in this way on Windows "Photos".
画像のデータの途中に何らかの異常があり、最後のほうにflagが書かれていそうなことが読み取れる。
This is suggesting that there are some problems in the middle of the image data, and that the flag should be the last part.
I opened the image on
Incorrect crc for IDAT chunk (is cda0e401, should be 0699358e)
該当のチャンク (0x4075 から始まる) のデータをバイナリエディタで書き換えて実験すると、異常はこのチャンクの最後のあたりにありそうだった。
よく見ると、0x6000 からの4バイトが 00 00 00 00
となっており、ここのデータが消されていそうだと考えた。
そこで、ここに当てはめてCRC-32が合うようなデータを全探索することにした。
全探索を行うため、以下のプログラムを作成した。
Investigating the chunk (beginning from 0x4075) by modifying data with a binary editor, I guessed that the problem should be hear the end of this chunk.
Looking closely, I found a 4-byte sequence 00 00 00 00
from 0x6000, and it looked like data in the part are erased.
Therefore, I decided to perform a brute-force search for data to put here to give the recorded CRC-32 value.
To perform a brute-force search, I created this program.
ami-0fcf52bcf5db7b003
) を立て、
作成したファイル solve.c
と与えられたファイル chall.png
をアップロードし、以下のコマンドを実行した。
I launched an ami-0fcf52bcf5db7b003
).
Then, I uploaded the created file solve.c
and the given file chall.png
, and executed these commands.
すると、約15分で当てはまるデータ AC ED 95 2E
が見つかった。
(探索は30分経っても終わらなかった)
このデータを書き込むと、画像の表示は以下のようになった。
As a result, satisfying data AC ED 95 2E
was found after about 15 minutes.
(searching continued over 30 minutes)
Putting this data into the image, the image looked in this way.
まだおかしいようであるが、ここからflagを読み取ることができた。
There still looks some problems exists, but I succeeded to read the flag from this image.