BUUCTF:[湖南省赛2019]Findme

本文详细解析了湖南省赛2019年Findme挑战的解题过程,通过修改图片尺寸、修复PNG结构、提取隐藏信息等手段,最终拼接出完整flag。涉及图片处理、十六进制编辑、steganography技术。

题目地址:https://buuoj.cn/challenges#[%E6%B9%96%E5%8D%97%E7%9C%81%E8%B5%9B2019]Findme
在这里插入图片描述
压缩包里有五张图,依次来看

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 

修改完宽高后,得到
在这里插入图片描述
接着用010 editor打开,发现chunk[2]chunk[3]缺少IDAT标识
在这里插入图片描述
IDAT十六进制标识为:49 44 41 54,将两个chunk的IDAT在union CTYPE type的位置补上即可得到完整的图片
在这里插入图片描述
然后使用Stegsolve打开,在blue 2通道发现二维码
在这里插入图片描述
在这里插入图片描述
得到第一块base64编码

1.png => ZmxhZ3s0X3

2.png

文件尾处有7z的字样,把尾处的数据都提取出来,不难发现它37 7A 03 04和zip的50 4B 03 04的格式很像
在这里插入图片描述
提取出这段数据,修改内容中所有7zPK,保存为test.zip
解压出一个2文件夹,里面有999个txt,但是有个618.txt大小和其他的不一样,打开得到第二段base64编码
在这里插入图片描述

2.png => 1RVcmVfc

3.png

chunk[0]-chunk[6]的每一个数据块的crc值都是可打印的Ascii字符
在这里插入图片描述

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

#运行结果:3RlZ30=

得到第三块base64编码

3.png => 3RlZ30=

4.png

EXIF
在这里插入图片描述
得到第四块base64编码

4.png => cExlX1BsY 

5.png

记事本打开5.png,末尾找到
在这里插入图片描述
得到第五块base64编码

5.png => Yzcllfc0lN

然后按照,1.png5.png4.png2.png3.pnp得到的base64顺序,拼接起来得到:

ZmxhZ3s0X3Yzcllfc0lNcExlX1BsY1RVcmVfc3RlZ30=

在这里插入图片描述

flag{4_v3rY_sIMpLe_PlcTUre_steg}
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

末 初

谢谢老板~感谢!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值