湖南省赛2019/BUUCTF-Misc:Findme
这道题挺恶熏的T T记录一哈。感谢群里提供WP的师傅和RichardTang师傅。
1.png
其中第一张根据做题经验明显需要修改宽高。
CRC爆破宽和高的脚本:
import zlib import struct file = '1.png' fr = open(file,'rb').read() data = bytearray(fr[12:29]) #crc32key = eval(str(fr[29:33]).replace('\\x','').replace("b'",'0x').replace("'",'')) crc32key = 0xC4ED3 #data = bytearray(b'\x49\x48\x44\x52\x00\x00\x01\xF4\x00\x00\x01\xF1\x08\x06\x00\x00\x00') n = 4095 for w in range(n): width = bytearray(struct.pack('>i', w)) for h in range(n): height = bytearray(struct.pack('>i', h)) for x in range(4): data[x+4] = width[x] data[x+8] = height[x] #print(data) crc32result = zlib.crc32(data) if crc32result == crc32key: print(width,height) print(data) newpic = bytearray(fr) for x in range(4): newpic[x+16] = width[x] newpic[x+20] = height[x] fw = open(file+'.png','wb') fw.write(newpic) fw.close
宽高修改完毕仍然发现图片是花的。。
原因是png的chunk2和3位置开头需要改为IDAT(讲真好偏。。
修改它需要用到010editor(10.0版本,戳我下载破解版提取码2agf)
加载png模板后,在变量这里可以看到各个数据块(chunk):
修改完毕后保存图片应该就显示正常啦。放到stegsolve图片隐写神器里扒拉几下可以看到一张二维码图。保存反色扫描得到:ZmxhZ3s0X3
2.png
文件尾处有7z的字样,把尾处的数据都提取出来,不难发现它(37 7A 03 04)和zip(50 4B 03 04)的格式很像。
把所有的7z替换成PK:
里面有1000个文件,其中618.txt大小和其他的都不同,得到:You find it: 1RVcmVfc
3.png
chunk[0]-chunk[6]每一个数据块的crc值像一个可打印的ascii字符:
连起来得到:
3RlZ30=
4.png
exiftool:
another part:cExlX1BsY
5.png
文件尾:I give U a gift:Yzcllfc0lN
将得到的这些base64片段排列组合(15423),解码得到flag。