方法一
可以通过stegsolve或winhex看到图片高度被改写:
改为:
再保存图片即可:
flag{B8B68DD7007B1E406F3DF624440D31E0}
方法二
使用脚本查看宽高是否被修改:
import zlib import struct import argparse import itertools parser = 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对比原始crc print('宽高没有问题') 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)
可以看到:
因此修改图片参数即可,同方法一。