Bugku_隐写 [Study notes][MISC]

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

    Bugku_隐写 [Study notes][MISC]

  • 首先关于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中打开文件,

    Bugku_隐写 [Study notes][MISC]

    具体说明如下,

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

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

    Bugku_隐写 [Study notes][MISC]

  • 修改值,找出flag。

    Bugku_隐写 [Study notes][MISC]

上一篇:服务器硬件配置


下一篇:openresty——安装 配置 使用