admin 管理员组

文章数量: 1184232

Bugku

  • 文件是一张PNG格式的图片

  • 首先关于PNG图像文件结构:

    PNG文件由一个8字节的文件署名域(HEX: ‘89 50 4E 47 0D 0A 1A 0A’)和按特定结构组织的3个以上的数据块(chunk)组成。

    PNG文件标志PNG数据块PNG数据块

    PNG定义了两种类型数据块:关键数据块(必需),辅助数据块(可选)。

    主要的关键数据块

    1. IHDR (header chunk),文件头数据块,包含图像基本信息。

    2. PLTE (palette chunk),调色板数据块。

    3. IDAT (image data chunk),图像数据块,存储实际图像数据信息。

    4. IEND (image trailer chunk),图像结束数据,最后一个数据块。

    每个数据块具体结构,

    • Length, 4字节,指定数据块中数据域的长度。
    • Chunk Type Code, 4字节,数据块类型码。
    • Chunk Data,可变长度,数据块数据,存储类型码指定的数据。
    • CRC,4字节,循环冗余检测,对Chunk Type Code域和Chunk Data域内原有的数据校验得出的校验码。

    辅助数据块这里提一个,

    • pHYs,物理像素尺寸数据块,指定像素大小或者图像宽高比例。
  • 在WinHex中打开文件,

    具体说明如下,

    十六进制含义
    89 50 4E 47 0D 0A 1A 0APNG 标识
    00 00 00 0DIHDR数据块的数据域长度为13字节
    49 48 44 52IHDR标识
    00 00 01 F4图像宽度,500 pixels
    00 00 01 A4图像高度,420 pixels
    08 06 00 00 00(这里忽略不谈)
    CB D6 DF 8ACRC校验值
    00 00 00 09pHYs数据块的数据域长度为9字节
    70 48 59 73pHYs标识
    00 00 12 74x轴上每单位4724像素
    00 00 12 74y轴上每单位4724像素
    01单位metre,00表示未定义实际像素大小,只定义了像素显示比例
    DE 66 1F 78CRC校验值
  • 对IHDR类型码域和数据域(49 48 44 52 00 00 01 F4 00 00 01 A4 08 06 00 00 00)做CRC-32校验,校验码为’C7 58 D7 7D‘,与CRC校验值 (‘CB D6 DF 8A’) 不符,推测图像宽度或长度被改动。

  • 暴破获得真正的宽与高。

  • 修改值,找出flag。

本文标签: Bugku