【misc】ctfshow-stega10 --套娃
附件下载下来是一张图片
各种隐写工具一把梭,无果,分析其二进制数据,把图片拖进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{我好难啊}