攻防世界-Misc-2-1(png图片头详细解释、png图片crc宽度爆破)

本文深入探讨了PNG文件头的结构,包括8字节固定头、数据块长度、IHDR标识、图片宽高以及CRC检验码。在攻防世界Misc挑战中,通过爆破解决IHDR和CRC之间的宽度错误问题,最终成功找到宽度为709,修复后的PNG文件揭示了隐藏的flag。
摘要由CSDN通过智能技术生成

先详细解释一下png的文件头:
- (固定)八个字节89 50 4E 47 0D 0A 1A 0A为png的文件头
- (固定)四个字节00 00 00 0D(即为十进制的13)代表数据块的长度为13
- (固定)四个字节49 48 44 52(即为ASCII码的IHDR)是文件头数据块的标示(IDCH)
- (可变)13位数据块(IHDR)
    - 前四个字节代表该图片的宽
    - 后四个字节代表该图片的高
    - 后五个字节依次为:
    Bit depth、ColorType、Compression method、Filter method、Interlace method
- (可变)剩余四字节为该png的CRC检验码,由从IDCH到IHDR的十七位字节进行crc计算得到。
也就是说我们可以通过爆破来得到高度和宽度

png的图片,winhex打开后发现文件头不对,然后修改过来,但是仍然打不开,而且宽度为0,linux打开有提示信息:

 IHDR和crc之间的错误,应该是宽度的问题,我们可以用图片数据进行爆破来得到宽度:

import struct
import binascii
import os

m &
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值