标签:port 宽度 editor 打开图片 loading write tps only pack
打开图片发现确实挺奇怪的
先binwalk分析一下
除了一个png,还有一个zip文件里面有4个txt。
用foremost分离出来。
zip有密码。
根据提示CRC32,用winrar打开
pass1.txt, pass2.txt, pass3.txt, 图片真实CRC32.txt大小都很小,可以利用CRC32爆破出文本信息。
CRC32爆破脚本:https://github.com/theonlypwner/crc32
使用方法:
python crc32.py reverse 你的crc32密文
因为pass1.txt文件大小为4,所以信息为{0x41, 0x77, 0x73, 0x64},转成ascii码,Awsd。
pass2.txt文件大小为4,所以信息为{0x32, 0x30, 0x32, 0x31},转成ascii码,2021。
pass3.txt文件大小为4,所以信息为{0x6d, 0x7a, 0x79, 0x30},转成ascii码,mzy0。
图片真实CRC32.txt文件大小为6,所以信息不确定。根据文件名字的提示,且文件大小只有6,CRC32有八位,所以应该是图片的CRC32和这个文件的CRC32相同,为0x59f1d4be.
用010editor后者winhex打开图片,修改CRC32
如果安装了相应模板(Template),按F5就可以运行
发现提示CRC32不匹配,那就应该是图片的高度和宽度不对。
用脚本计算一下png图片的真实高度和宽度。
import binascii import struct import sys file = input("图片地址:") fr = open(file,‘rb‘).read() data = bytearray(fr[0x0c:0x1d]) crc32key = eval(‘0x‘+str(binascii.b2a_hex(fr[0x1d:0x21]))[2:-1]) #原来的代码: crc32key = eval(str(fr[29:33]).replace(‘\\x‘,‘‘).replace("b‘",‘0x‘).replace("‘",‘‘)) n = 4095 for w in range(n): width = bytearray(struct.pack(‘>i‘, w)) for h in range(n): height = bytearray(struct.pack(‘>i‘, h)) for x in range(4): data[x+4] = width[x] data[x+8] = height[x] crc32result = binascii.crc32(data) & 0xffffffff if crc32result == crc32key: print(width,height) newpic = bytearray(fr) for x in range(4): newpic[x+16] = width[x] newpic[x+20] = height[x] fw = open(file+‘.png‘,‘wb‘) fw.write(newpic) fw.close sys.exit()
修改图片的高度和宽度
得到正常的图片
扫码得到:pass4为crc32爆破出90开头那一个
根据之前爆破的结果,pass4为9070yo。
将pass1, pass2, pass3, pass4拼凑起来:Awsd2021mzy09070yo
flag应该在flag.txt中,所以这应该就是zip的解压密码。
解压后打开flag.txt得到flag
flag{Pn9_Crc32_b2ut3_f0rce}
标签:port 宽度 editor 打开图片 loading write tps only pack
原文地址:https://www.cnblogs.com/fallingskies/p/14284582.html