691 字
3 分钟
MISC——图片隐写之直接附加

1793698885880-ejqc62.jpg

所谓隐写就是将信息或文件隐藏在某些文件中,而发掘这些被隐藏信息的过程就是隐写分析。

文件的基本结构分为文件头+文件内容(+文件尾),不是所有的文件都有文件尾,程序通过识别到文件的文件头从而分析文件的真实类型。

一般浏览器在读取到拥有文件尾的文件时,读到结束标记后就会停止解析,所以尾部追加数据通常不影响正常显示,换而言之,就是文件尾部追加的内容并不会影响文件的正常浏览。(但不是所有格式、所有解析器都这样;有些格式靠长度字段读取,追加数据可能被忽略或报错。)

而直接将内容追加至有文件尾的文件末尾就是最常见的隐写术,即直接附加。

无论是jpg、png还是其他的文件,都是由一些特定的数据块组成的。 如png分为四个关键数据块:IHDR(文件头数据块)、PLTE(调色板数据块(不是所有png都有))、IDAT(图像数据块)、IEND(图像结束数据),以及一些辅助数据块组成。(flag也可能藏在文本块中,不一定在文件尾)

每个数据块都由四部分组成:

  1. length长度
  2. chunk type code数据块类型码
  3. chunk data数据块数据
  4. CRC循环冗余校验码

一般做题会先使用file命令来检查文件后缀是否正确,原理其实也是上下文所述。 语法:file 文件名

PNG文件总是由固定的字节(89 50 4E 47 0D 0A 1A 0A)开始,IEND数据块的长度总00 00 00 00,数据标识总是49 45 4E 44,CRC固定为AE 42 60 82。一般PNG文件以(00 00 00 00 49 45 4E 44 AE 42 60 82)为结尾

Pasted image 20261103191617.png

Pasted image 20261103191630.png

直接附加的隐写方法,可能会在文件头和文件尾部直接附加明文flag或加密flag,但是稍微进阶一些的题目,用肉眼去查看的方法就容易失效,有时会在文件尾追加其他文件,而其他文件与本体文件的文件尾与文件头的交接处也可能存在flag。

而当我们学会接触简单的文件尾附加之后,就可以尝试进阶一些的题目了。

这种文件结构题进一步,给出的附件就可能不是一个完好的文件了,而是一个破损或缺失部分文件头的文件通过故意将文件头破坏而导致无法识别这是一个什么文件。

MISC——图片隐写之直接附加
https://imjiazi.top/posts/misc2/
作者
甲子
发布于
2026-11-03
许可协议
CC BY-NC-SA 4.0