Art Mystery

ファイル art.png が与えられた。

このファイルをTSXBINで開くと、IHDR内のWidthとHeightが0になっていた。
WidthとHeightが壊れているPNGファイルは、Red Team Lounge CTF 2021 の Manipulatedで扱った。

そこで、Manipulated で用いた extract.pl を用いてIDATチャンクのデータを抽出し、 CyberChef で Zlib Inflate をかけると、1,894,064 バイトのデータが得られた。
1894064 = 2 * 2 * 2 * 2 * 43 * 2753 = 688 * 2753 である。 さらに、2753 = 4 * 688 + 1 であり、これは1行が「表現方法1バイト + 1ピクセル4バイトのデータが688ピクセル分」であることに対応していると推測できる。

TSXBINでWidthとHeightにそれぞれ688を書き込むと、表示できる画像ファイルになり、画像中にflagが書かれていた。

A file art.png was given.

Opening the file with TSXBIN, I found that Width and Height in IHDR were 0.
I have dealed with a PNG whose Width and Height are broken in the challenge "Manipulated" in Red Team Lounge CTF 2021.

I extracted the data in the IDAT chunks via extract.pl I used in Manipulated and applied "Zlib Inflate" to the extracted data on CyberChef. The result was 1,894,064-byte data.
We can say that 1894064 = 2 * 2 * 2 * 2 * 43 * 2753 = 688 * 2753. We can also say that 2753 = 4 * 688 + 1 and I thought this corresponds to a row made of "the format of this row (1 byte) + data for 688 pixels (4 bytes per pixel)".

According to this, I put 688 to Width and Height with TSXBIN. The result was a valid image file and the flag was written in the image.

extract.pl

flag{you_found_my_size!}

PBjar CTF