ctfshow_stega10-----CRC爆破

该文章已生成可运行项目,
 CRC爆破

先简单了解一下CRC爆破

适用于压缩包中文件比较小,比如只有几字节的时候

可以直接用网上的脚本爆破,但是要注意有些脚本只能提取zip压缩包的CRC32:

https://github.com/AabyssZG/CRC32-Tools

https://github.com/theonlypwner/crc32

解题

解压打开是一张图片

放进010,其实看了好久不知道怎么写,找到这一串字符

aHR0cHM6Ly93d3cubGFuem91cy5jb20vaTliMGtzZ,base64解码

解码得到https://www.lanzous.com/i9b0ksd

根据提示网址lanzous修改为lanzoux

打开下载得到flag.zip压缩包

解压

都进行了加密

注意到每一个文档都是1字节

最后一列是CRC32

使用CRC脚本进行爆破

import string
import binascii
s=string.printable
c=[0xF3B61B38,0xF3B61B38,0X6ABF4A82,0X5ED1937E,0X09b9265b,0x84b12bae,0x70659eff,0x90b077e1,0x6abf4a82]
password = ''
for crc in c:
    for i in s:
        if crc==(binascii.crc32(i.encode())&0xffffffff):
            password =password + i
print(password)

拿到密码

图片png打不开

放到010

开头不是png有问题,拉到尾部

发现是倒的png,这就知道是将图片结构按倒序排列,我们将他复原

复原的python脚本

import re
import binascii

def read_file(filepath):
    with open(filepath,'rb') as fp:
        content=fp.read();
    return content

#以二进制读取图片,并转为16进制
a = read_file('n.png')
hexstr = str(binascii.b2a_hex(a))
hexstr = re.findall("b'(.*?)'",hexstr)[0]

#每俩位分割成列表元素
result = []
result.append(re.findall(r'.{2}', hexstr))
result = result[0]

#按倒序排列,拼接列表为文本
daoxu = result[::-1]
hex= ''
for i in daoxu:
    hex +=i

print(hex)

将得到的16进制粘贴为hex形式,另存为png

得到图片二维码

解开二维码拿到flag

flag{我好难啊}
本文章已经生成可运行项目
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值