分析:
这是一道杂项类PNG隐写题,在PNG里隐藏了zlib压缩数据。
比赛时解到解压zlib对8346开头的字符串一筹莫展。赛后经群内大佬点化,茅塞顿开,遂复现如下:
复现:
题目附件是一张PNG图片:
丢到tweakpng里检测一下,发现两个报错:
分析发现三个IDAT块是没问题的,但是多出了一个无法识别的DATx块,而且没有识别出结尾块IEND,放进Winhex里查看也证实了这一点。
在Winhex中看出文件尾是不完整的,正常的文件尾应该是 0000 49454E44 AE426082
结合之前tweakpng里的报错:Incorrect crc for DATx chunk (is 9c4e1c00,should be 886b1f6d),即DATx块的CRC校验码不正确,断定DATx中存在大问题。
(PS:注意一下这里tweakpng提示的CRC校验码不正确是因为DATx里藏了zlib把结尾的CRC校验码覆盖了,不要试着改回去,不然就把路走窄了,别问我怎么知道的!)
binwalk跑一下发现存在zlib:
在DATx块开头的地方也找到了zlib的文件头:
(这里选zlib一直选到文件尾也是可以的,解出来的字符串是