題目鏈接:http://ctf5.shiyanbar.com/misc/funfile
這道題的文件一看文件內(nèi)容的格式就知道是一個(gè)bytes文件,于是寫(xiě)一個(gè)腳本將其寫(xiě)為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)
看到輸出的文件的內(nèi)容,感覺(jué)像是某種格式的文件,但是文件頭AFBC1C27,從未見(jiàn)過(guò),在網(wǎng)上搜索也沒(méi)有什么發(fā)現(xiàn)。無(wú)意中想到文件格式的大小端,于是按搜索BCAF271C的文件頭

image.png
發(fā)現(xiàn)是一個(gè)7z文件頭,并且丟失了部分的文件頭數(shù)據(jù),補(bǔ)完數(shù)據(jù)以后,考慮到文件頭發(fā)生了大小端交換,后面的數(shù)據(jù)也存在這個(gè)問(wèn)題(經(jīng)過(guò)測(cè)試,果然僅修改文件頭,提示解壓失?。?,于是修改之前的代碼,如下:
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
既然圖片內(nèi)容沒(méi)有發(fā)現(xiàn)什么信息,那么應(yīng)該是圖片隱寫(xiě),果然在文件頭發(fā)現(xiàn)了一個(gè)神似的字符串,將其base64解碼得到flag

image.png