有趣的文件--实验吧

题目链接: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的文件头

image.png

发现是一个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)

将其解压以后得到了一张图片

有趣的文件--实验吧_第1张图片
image.png

既然图片内容没有发现什么信息,那么应该是图片隐写,果然在文件头发现了一个神似的字符串,将其base64解码得到flag

有趣的文件--实验吧_第2张图片
image.png

你可能感兴趣的:(有趣的文件--实验吧)