实验吧:有趣的文件

解题链接:http://www.shiyanbar.com/ctf/1861

点开给的链接就是一串字符串,很明显的是16进制字串,很像一个文件的形式。于是把所有字符复制到文件中,然后用python脚本读取除前面第一个字节外的所有字节,并以二进制写入文件中。

但是还有一个问题,就是文件类型是什么?前几次实验时就说过,每一个文件都有一个文件头,指明其文件类型。于是上网搜索afbc 1c27。

看来是7z类型的文件,而且前面还有一个7a37,于是加上7a37重新将字符串写入到1.7z文件中。

后来写完发现并不能进行读取,打开文件出现错误。说明文件还存在某些问题

然后用ghex打开发现,这个文件中的7a37变成了z7,而不是想要的7z,说明该文件存在大小端转换的问题。

所以需要将每4个字节中前2字节和后2字节进行调换位置。

代码如下:

f = open('1.txt','r')
str = '377a'

while 1:
    result = f.readline()
    if not result:
        break
    line = result.split(' ')[1:]
    line = [x[2:]+x[:2] for x in line]
    str += ''.join(line).replace('\n','')
fw = open('1.7z','wb')
fw.write(str.decode('hex'))
f.close()
fw.close()

调换位置后再次打开,发现一张阿狸的图片。打开发现并没有flag,所以用ghex进行打开

直接看见了一个奇怪的东西,Q1RG{RlVOTllfUDFDVFVSMw==}

这个东西一看就是base64编码过的,在线解密看看,后来发现并没办法解密,想到应该是{}这个符号的问题,把符号删了再试试

恩,这个明显就是flag的格式了,把{}再加进去,得到flag

CTF{FUNNY_P1CTUR3}

点赞

发表评论

[2;3Rer>