题目链接:http://ctf5.shiyanbar.com/misc/funfile
这道题的文件一看文件内容的格式就知道是一个bytes文件,于是写一个脚本将其写为bytes文件
import binascii
f = open('funfile', 'r')
text = f.read()
text = text.split()
for i in text:
if len(i) == 7:
text.remove(i)
with open('funfile_output.txt', 'wb') as g:
output = b''
for i in text:
output += binascii.a2b_hex(i)
g.write(output)
看到输出的文件的内容,感觉像是某种格式的文件,但是文件头AFBC1C27
,从未见过,在网上搜索也没有什么发现。无意中想到文件格式的大小端,于是按搜索BCAF271C
的文件头
发现是一个7z文件头,并且丢失了部分的文件头数据,补完数据以后,考虑到文件头发生了大小端交换,后面的数据也存在这个问题(经过测试,果然仅修改文件头,提示解压失败),于是修改之前的代码,如下:
import binascii
f = open('funfile', 'r')
text = f.read()
text = text.split()
for i in text:
if len(i) == 7:
text.remove(i)
text.insert(0, '7a37')
with open('funfile_output.zip', 'wb') as g:
output = b''
for i in text:
tmpa = i[:2]
tmpb = i[2:]
new_byte = tmpb + tmpa
output += binascii.a2b_hex(new_byte)
g.write(output)
将其解压以后得到了一张图片
image.png既然图片内容没有发现什么信息,那么应该是图片隐写,果然在文件头发现了一个神似的字符串,将其base64解码得到flag
image.png
网友评论