BUUCTF:[湖南省赛2019]Findme

解压文件后有五张png图片
先打开第一张1.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 

然后可以得到1.png.png
在这里插入图片描述
用010editor打开1.png.png
在这里插入图片描述
可以看见chunk[2]和chunk[3]缺少IDAT,IDAT的十六进制标识为49 44 41 54,在union CTYPE type 处补上,可以得到修补后的图片
在这里插入图片描述
然后用stegsolve打开,在blue plane 2处发现二维码
在这里插入图片描述
使用QR解码得到在这里插入图片描述
一串不全的base64编码:

ZmxhZ3s0X3

接下来看2.png
可以发现结尾处 7z 的格式37 7A 03 04和 zip 的格式50 4B 03 04有相像之处
提取所有7z内容改为PK
在这里插入图片描述
保存为2p.zip
解压出一个文件夹,含有大量txt文本
在这里插入图片描述
其中618.txt文本大小与其他不一样,打开得到第二段base64编码

1RVcmVfc

打开3.png
在chunk[0]-chunk[6]可以发现uint32 crc处为可打印的Ascii字符
在这里插入图片描述

a = [0x33,0x52,0x6C,0x5A,0x33,0x30,0x3D]
for i in a:
    print(chr(i),end="")

在这里插入图片描述
得到第三串base64编码

3RlZ30=

将4.png放入EXIF信息查看器
在这里插入图片描述
得到第四串base64编码

cExlX1BsY

将5.png用记事本打开
在这里插入图片描述

扫描二维码关注公众号,回复: 11612291 查看本文章

得到第五串

Yzcllfc0lN

以上编码按1、5、4、6、3的顺序(可多组合测试几次出来)进行组合得到

ZmxhZ3s0X3Yzcllfc0lNcExlX1BsY1RVcmVfc3RlZ30=

解码得:flag{4_v3rY_sIMpLe_PlcTUre_steg}

猜你喜欢

转载自blog.csdn.net/m0_46481239/article/details/108031944