题目地址:https://buuoj.cn/challenges#[%E6%B9%96%E5%8D%97%E7%9C%81%E8%B5%9B2019]Findme
![在这里插入图片描述 BUUCTF:[湖南省赛2019]Findme_Findme](https://file.cfanz.cn/uploads/png/2023/06/19/16/Qdb2F15Pa1.png)
压缩包里有五张图,依次来看
1.png
![在这里插入图片描述 BUUCTF:[湖南省赛2019]Findme_7z_02](https://file.cfanz.cn/uploads/png/2023/06/19/16/df1MA64VOb.png)
第一张图对比其他几张图,明显需要修改宽高,脚本如下:
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修改完宽高后,得到
![在这里插入图片描述 BUUCTF:[湖南省赛2019]Findme_BUUCTF_03](https://file.cfanz.cn/uploads/png/2023/06/19/16/1e5I6JfOZ6.png)
接着用010 editor打开,发现chunk[2]、chunk[3]缺少IDAT标识
![在这里插入图片描述 BUUCTF:[湖南省赛2019]Findme_宽高_04](https://file.cfanz.cn/uploads/png/2023/06/19/16/Z6O749447f.png)
IDAT十六进制标识为:49 44 41 54,将两个chunk的IDAT在union CTYPE type的位置补上即可得到完整的图片
![在这里插入图片描述 BUUCTF:[湖南省赛2019]Findme_宽高_05](https://file.cfanz.cn/uploads/png/2023/06/19/16/M37N0NaR3Y.png)
然后使用Stegsolve打开,在blue 2通道发现二维码
![在这里插入图片描述 BUUCTF:[湖南省赛2019]Findme_7z_06](https://file.cfanz.cn/uploads/png/2023/06/19/16/6d5LSWaT5D.png)
![在这里插入图片描述 BUUCTF:[湖南省赛2019]Findme_BUUCTF_07](https://file.cfanz.cn/uploads/png/2023/06/19/16/3H21A1831P.png)
得到第一块base64编码
1.png => ZmxhZ3s0X32.png
文件尾处有7z的字样,把尾处的数据都提取出来,不难发现它37 7A 03 04和zip的50 4B 03 04的格式很像
![在这里插入图片描述 BUUCTF:[湖南省赛2019]Findme_Findme_08](https://file.cfanz.cn/uploads/png/2023/06/19/16/24Z6I06230.png)
提取出这段数据,修改内容中所有7z为PK,保存为test.zip 解压出一个2文件夹,里面有999个txt,但是有个618.txt大小和其他的不一样,打开得到第二段base64编码
![在这里插入图片描述 BUUCTF:[湖南省赛2019]Findme_BUUCTF_09](https://file.cfanz.cn/uploads/png/2023/06/19/16/2D5V45e6Lc.png)
2.png => 1RVcmVfc3.png
chunk[0]-chunk[6]的每一个数据块的crc值都是可打印的Ascii字符
![在这里插入图片描述 BUUCTF:[湖南省赛2019]Findme_7z_10](https://file.cfanz.cn/uploads/png/2023/06/19/16/SKXTNKBa5e.png)
a = [0x33,0x52,0x6C,0x5A,0x33,0x30,0x3D]
for i in a:
print(chr(i),end="")
#运行结果:3RlZ30=得到第三块base64编码
3.png => 3RlZ30=4.png
EXIF
![在这里插入图片描述 BUUCTF:[湖南省赛2019]Findme_BUUCTF_11](https://file.cfanz.cn/uploads/png/2023/06/19/16/6d0RbBJ82I.png)
得到第四块base64编码
4.png => cExlX1BsY5.png
记事本打开5.png,末尾找到
![在这里插入图片描述 BUUCTF:[湖南省赛2019]Findme_湖南省赛2019_12](https://file.cfanz.cn/uploads/png/2023/06/19/16/G22O9c9R11.png)
得到第五块base64编码
5.png => Yzcllfc0lN然后按照,1.png、5.png、4.png、2.png、3.pnp得到的base64顺序,拼接起来得到:
ZmxhZ3s0X3Yzcllfc0lNcExlX1BsY1RVcmVfc3RlZ30=![在这里插入图片描述 BUUCTF:[湖南省赛2019]Findme_湖南省赛2019_13](https://file.cfanz.cn/uploads/png/2023/06/19/16/YPe205fMeR.png)
flag{4_v3rY_sIMpLe_PlcTUre_steg}










