解压得5个图片,其中图片1,高度不正常,使用下面脚本破解真实高度和宽度
import os
import binascii
import structcrcbp = open("1.png", "rb").read()
for i in range(1024):for j in range(1024):data = crcbp[12:16] + struct.pack('>i', i) + struct.pack('>i', j) + crcbp[24:29]crc32 = binascii.crc32(data) & 0xffffffffif crc32 == 0x000c4ed3: # 图片特定crc值 000c4ed3print(i, j)print("hex", hex(i), hex(j))
IDAT隐写
chunk2和chunk3的CTYPE缺少IDAT字样,给加上(在16进制数据里改)IDAT的十六进制标识为49 44 41 54
改好图片1和其他图片一样了
改好后使用Stegsolve打开发现二维码,扫码得
ZmxhZ3s0X3
2,png尾部发现7z文件包含txt
有2006个7z 对应16进制就是377A,
7Z替换成PK
这些7Z后面要么是03 04 要么就是01 02,zip数据的,把7Z全部改成PK
CTRL+F CTRL+R
全部替换
拷贝到kali,使用binwalk分离得到1000个txt,
按照大小排序168最大
发现第二个线索 1RVcmVfc
3.png除了chunk7的CRC是正常的长度,其他的都太短了
把这6个crc保存下来
33 52 6C 5A 33 30 3D
3RlZ30= 第三个线索
cExlX1BsY 第四个线索
Yzcllfc0lN 第五个线索
ZmxhZ3s0X3
1RVcmVfc
3RlZ30=
cExlX1BsY
Yzcllfc0lN
去cyberchef 解码,单独解码只有1和4可以解码,3最后是=肯定在最后,4在中间,只有12453和15423两种排列,最后按照15423排列
ZmxhZ3s0X3Yzcllfc0lNcExlX1BsY1RVcmVfc3RlZ30=
flag{4_v3rY_sIMpLe_PlcTUre_steg}