ファイル art.png
が与えられた。
このファイルを
WidthとHeightが壊れているPNGファイルは、Red Team Lounge CTF 2021 の Manipulatedで扱った。
そこで、Manipulated で用いた extract.pl
を用いてIDATチャンクのデータを抽出し、
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
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
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.