通过CRC32爆破修改图片的宽高 ctf-misc图片隐写
程序员文章站
2024-01-19 09:36:58
**一.在处理图片隐写题的时候,可能会修改图片原有的宽高,导致图片里面的内容无法正常显示,那么怎么判断它的宽高是否被修改了呢?**1.把图片拖进010editor中会发现左下角提示CRC不匹配,这是因为修改了高宽,却没有修改CRC,导致读取报错。2.在linux中CRC32错误的图片是无法打开的,也可以利用pngcheck检查图片,会提示CRC32校验错误**二.既然知道了CRC校验码错误,那么如何修改呢? 首先我们要知道CRC32是有哪些字节构成的**PNG文件中总是以固定的八个字节开...
**
一.在处理图片隐写题的时候,可能会修改图片原有的宽高,导致图片里面的内容无法正常显示,那么怎么判断它的宽高是否被修改了呢?
**
1.把图片拖进010editor中会发现左下角提示CRC不匹配,这是因为修改了高宽,却没有修改CRC,导致读取报错。
2.在linux中CRC32错误的图片是无法打开的,也可以利用pngcheck检查图片,会提示CRC32校验错误
**
二.既然知道了CRC校验码错误,那么如何修改呢? 首先我们要知道CRC32是有哪些字节构成的
**
PNG文件中总是以固定的八个字节开头
89 50 4E 47 0D 0A 1A 0A
数据块长度13
00 00 00 0D
文件头数据块标示IDCH
49 48 44 52
13位数据块(IHDR)
下面为宽和高
00 00 07 7E 00 00 03 60
这5个字节依次为Bit depth,ColorType,Compression method,Filter method,Interlace method
08 06 00 00 00
接下来的四字节为该png图片的CRC校验码
7D C7 3F 7F
CRC校验码,由IDCH和IHDR共十七位字节进行crc计算得到
解决方法:
1.简单点的隐写题,可以直接修改宽高,然后显示flag
2.那么如果修改宽高,并不会直接看到flag,需要放入stegsolve里或者做其它的进一步处理时。
这里会产生一个问题,那就是修改过宽高的图片stegsolve无法打开,提示IO错误。
这是因为png图像的IHDR段中的高宽被修改,导致计算出来的CRC不正确,所以无法正确读取。
通过python2脚本来获取图片高度
# -*- coding: utf-8 -*-
import binascii
import struct
crc32key = 0x7DC73F7F
for i in range(0, 65535):
height = struct.pack('>i', i)
#CRC: 7DC73F7F
data = '\x49\x48\x44\x52\x00\x00\x07\x7E' + height + '\x08\x06\x00\x00\x00'
crc32result = binascii.crc32(data) & 0xffffffff
if crc32result == crc32key:
print ''.join(map(lambda c: "%02X" % ord(c), height))
运行:得到图片实际高度为0000043C,在010editor中修改保存
修改宽度同理,只需将参数进行简单替换
3.也可以同时爆破出图片的宽高,K.R.师傅告诉我的脚本:
import struct
import zlib
def hexStr2bytes(s):
b = b""
for i in range(0,len(s),2):
temp = s[i:i+2]
b +=struct.pack("B",int(temp,16))
return b
str1="49484452"
str2="0806000000"
bytes1=hexStr2bytes(str1)
bytes2=hexStr2bytes(str2)
wid,hei = 1918,864
crc32 = "0x7dc73f7f"
for w in range(wid,wid+2000):
for h in range(hei,hei+2000):
width = hex(w)[2:].rjust(8,'0')
height = hex(h)[2:].rjust(8,'0')
bytes_temp=hexStr2bytes(width+height)
if eval(hex(zlib.crc32(bytes1+bytes_temp+bytes2))) == eval(crc32):
print(hex(w),hex(h))
爆破结果:
本文地址:https://blog.csdn.net/weixin_44145452/article/details/109612189