方法一
可以通过stegsolve或winhex看到图片高度被改写:
改为:
再保存图片即可:
flag{B8B68DD7007B1E406F3DF624440D31E0}
方法二
使用脚本查看宽高是否被修改:
import zlib
import struct
import argparse
import itertoolsparser = argparse.ArgumentParser()
parser.add_argument("-f", type=str, default=None, required=True,help="输入同级目录下图片的名称")
args = parser.parse_args()bin_data = open(args.f, 'rb').read()
crc32key = zlib.crc32(bin_data[12:29]) # 计算crc
original_crc32 = int(bin_data[29:33].hex(), 16) # 原始crc
# print(original_crc32)if crc32key == original_crc32: # 计算crc对比原始crcprint('宽高没有问题')
else:input_ = input("宽高被改了, 是否CRC爆破宽高? (Y/n):")if input_ not in ["Y", "y", ""]:exit()else: for i, j in itertools.product(range(4095), range(4095)): data = bin_data[12:16] + struct.pack('>i', i) + struct.pack('>i', j) + bin_data[24:29]crc32 = zlib.crc32(data)if(crc32 == original_crc32): # 计算当图片大小为i:j时的CRC校验值,与图片中的CRC比较,当相同,则图片大小已经确定print(f"\nCRC32: {hex(original_crc32)}")print(f"宽度: {i}, hex: {hex(i)}")print(f"高度: {j}, hex: {hex(j)}")exit(0)
可以看到:
因此修改图片参数即可,同方法一。