【misc】ctfshow-stega10 --套娃

发布时间 2023-11-04 11:33:53作者: GGBomb

附件下载下来是一张图片

各种隐写工具一把梭,无果,分析其二进制数据,把图片拖进hxd,发现一段疑似base64的东西

base64解密试试

解密出来是一个网址,打开下载第二个附件:flag.zip,打开这个附件

发现需要密码,里面还有个密码的文件夹,打开密码那个文件夹

9个加密的txt文件,但是里面只有一个字节数据,可以考虑crc32爆破

一字节爆破脚本如下:

import binascii
import string

def crack_crc():
    print('-------------Start Crack CRC-------------')
    crc_list = [0xf3b61b28, 0xf3b61b38, 0x6abf4a82, 0x5ed1937e,0x09b9265b,0x84b12bae,0x70659eff,0x90b077e1,0x6abf4a82]#文件的CRC32值列表,注意顺序
    comment = ''
    chars = string.printable
    for crc_value in crc_list:
        for char1 in chars:
            char_crc = binascii.crc32(char1.encode())#获取遍历字符的CRC32值
            calc_crc = char_crc & 0xffffffff#将获取到的字符的CRC32值与0xffffffff进行与运算
            if calc_crc == crc_value:#将每个字符的CRC32值与每个文件的CRC32值进行匹配
                print('[+] {}: {}'.format(hex(crc_value),char1))
                comment += char1
    print('-----------CRC Crack Completed-----------')
    print('Result: {}'.format(comment))

if __name__ == '__main__':
    crack_crc()

爆破出来的结果为 447^*5#)7

这个就是那个压缩包的密码,解压得到一个n.png文件,但是打不开,还是拖进去hxd分析一下二进制数据

发现结尾是png,考虑是png的字节顺序被倒序,把它倒序回来就行

脚本:

f=open("n.png","rb")
data=f.read()
data=data[::-1]
file=open("./flag.png",'wb')
file.write(data)
倒序完的png就是一个二维码,扫码即可得到flag:flag{我好难啊}