BUUCTF:一路到底

这篇博客介绍了一种通过Python脚本解析多个txt文件中的数字,并将它们转换为十六进制来创建zip文件的过程。作者揭示了文件头的识别方法,如zip文件的特定十六进制头标识,并分享了如何利用Python进行文件头修复以解密图像文件。最后,博主提到了使用爆破方法确定压缩包的密码,解压后得到image.png,进一步修改文件头以显示正确的图像格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

https://buuoj.cn/challenges#%E4%B8%80%E8%B7%AF%E5%88%B0%E5%BA%95

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
每个txt的关键点是前面的数字
在这里插入图片描述
第一个txt文件内容中的数字是20555转换为十六进制发现是504b,再看看这个txt给的下一个文件内容

在这里插入图片描述
在这里插入图片描述
寻找提示找到第二个txt中的数字是772转换为十六进制为304,这里应该还需要十六进制补高的,也就是0304504b0304zip的十六进制文件头,利用py脚本按照给的提示依次取出所有的数字,转换为十六进制再以字节流的形式写入flag.zip

import binascii

hexdata = ''
with open('./files/start.txt') as f:
    cont = f.read()
    nexttxt = cont[-36:]
    hexdata += '{:04x}'.format(int(cont[0:cont.find(':')-1]))
    while True:
        path = './files/' + nexttxt
        try:
            with open(path) as f:
                cont = f.read()
                nexttxt = cont[-36:]
                hexdata += '{:04x}'.format(int(cont[0:cont.find(':')-1]))
        except:
            break

with open('flag.zip','wb') as f:
    f.write(binascii.unhexlify(hexdata))

得到如下
在这里插入图片描述
这个说实话爆破有点坑,什么提示都没,看了下Ga1axy师傅的wp,爆破26字母小写+数字
在这里插入图片描述
得到压缩包密码:tgb678
解压得到image.png
在这里插入图片描述
文件头应该是jpg的,修改文件头为jpg文件头:FF D8 FF E0在这里插入图片描述

flag{0c6b489ca956e2fd94dce12be4bf0729}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

末 初

谢谢老板!

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

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

打赏作者

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

抵扣说明:

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

余额充值