被揉坏的芙芙
第一节:题目
一张"被揉坏"的图,要用CRC修回来
第二节:过程
PNG 的 IHDR 宽度2560被改成144 且CRC字段变0 了
还挤出来了一串神秘字符051F503E
说明解CRC32的钥匙就是这个,051F503E是密钥
解CRC的脚本
import struct, sys, zlib
SRC = sys.argv[1] if len(sys.argv) > 1 else "芙.png"
HINT = 0x051F503E # 题面给的真 CRC
d = open(SRC, "rb").read()
H = struct.unpack(">I", d[0x14:0x18])[0] # 高度没被动
fields = (d[0x18], d[0x19], d[0x1A], d[0x1B], d[0x1C]) # 位深/颜色/压缩/滤波/隔行
for w in range(1, 10000):
data = struct.pack(">IIBBBBB", w, H, *fields)
if zlib.crc32(b"IHDR" + data) & 0xffffffff == HINT:
print("width =", w)
之后
宽度从 00 00 00 90 改成 00 00 0A 00
CRC从 00 00 00 00改成 05 1F 50 3E
即可
最终flag?CTF{CrC32_15_1mp0r74n7}