2023 宁波天一永安杯 MISC 进阶题解:PDF 隐写与 binwalk 分析实战
一、题目背景
- 赛事:宁波天一·永安杯 2023
- 题目类型:MISC(隐写术·PDF 隐写)
- 核心线索:图片文件
image.png包含隐藏 PDF 数据 - 目标:从图片中提取隐写的 PDF 信息,解码得到 Flag
二、解题思路与核心分析
1. 初步检测:binwalk 挖掘隐藏数据
面对未知格式的图片文件,首先使用 binwalk 工具进行深度扫描,它能识别文件中隐藏的其他文件格式、压缩包或数据段,是隐写分析的第一步核心工具。
执行扫描命令:
binwalk image.png
扫描结果关键信息如下:
| 十进制(DECIMAL) | 十六进制(HEXADECIMAL) | 描述(DESCRIPTION) |
|---|---|---|
| 0 | 0x0 | PNG image, 1200 x 1200, 8-bit/color RGBA, non-interlaced |
| 119 | 0x77 | Zlib compressed data, best compression |
| 66608 | 0x10430 | PDF document, version: "1.3" |
关键结论:
扫描结果明确显示,图片文件中隐藏了一个 版本为 1.3 的 PDF 文档,其起始偏移量为十六进制 0x10430(十进制 66608)。这说明 Flag 并非直接隐藏在图片 LSB 中,而是以 PDF 格式封装在图片尾部,属于复合格式隐写。
2. 数据提取:foremost 分离隐写文件
确定存在隐藏 PDF 后,使用 foremost 工具按文件格式分离数据。foremost 会根据扫描到的文件头/尾,自动提取独立的文件并保存。
执行提取命令:
foremost image.png执行完成后,会在当前目录生成 output/ 文件夹,其中包含分离出的 PDF 文件(通常位于 output/pdf/ 目录下)。
3. 隐写验证:提取 PDF 为空白的原因分析
直接打开提取出的 PDF 文件,会发现显示为空白。这是 CTF 隐写题的常见套路:
- PDF 本身存在,但内容被加密/编码,或仅包含隐藏数据段
- 常规 PDF 阅读器无法直接读取其中的隐写信息,需要通过在线转换工具或专业脚本解码
4. 核心解码:PDF 转 TXT 提取 Flag
针对空白 PDF 的隐写场景,使用专业的 PDF 转 TXT 工具提取隐藏文本。这里选择在线工具 PDF24 Tools(https://tools.pdf24.org/zh/pdf-to-txt),操作流程如下:
- 打开上述在线工具,上传提取到的 PDF 文件
- 选择「PDF 转 TXT」功能,执行转换
- 下载转换后的 TXT 文件,打开即可看到隐藏的 Flag
解码结果:
flag{625d7f13d1646c3ab86be95a6ee05dd9}三、核心技术知识点总结
1. 复合隐写的检测与处理
- binwalk:万能文件格式分析工具,支持扫描图片/音频/视频中隐藏的任意格式文件(PDF/ZIP/EXE 等)
- foremost:文件分离工具,配合 binwalk 结果,可批量提取隐藏文件
- 适用场景:图片中隐藏文档、文档中隐藏图片、音频中隐藏压缩包等复合隐写场景
2. PDF 隐写的常见类型与解决方法
| 隐写类型 | 特征 | 解决方法 |
|---|---|---|
| 空白 PDF 含隐写文本 | 打开 PDF 无内容,仅含隐藏数据 | 使用 PDF 转 TXT 工具提取文本 |
| PDF 加密 | 打开提示输入密码 | 尝试字典爆破(John the Ripper)、弱口令破解 |
| PDF 标签隐写 | 文档正常,但元数据含 Flag | 查看 PDF 属性(元数据/注释) |
| PDF 图层隐写 | 仅底层可见,表层空白 | 使用 Photoshop 等工具查看图层 |
3. 常用隐写工具组合
| 工具类型 | 工具名称 | 适用场景 |
|---|---|---|
| 扫描工具 | binwalk | 检测文件中隐藏的任意格式数据 |
| 提取工具 | foremost | 按格式分离文件中的隐藏数据 |
| 解码工具 | zsteg | 检测 PNG/BMP 图片的 LSB 隐写 |
| 在线工具 | PDF24 | 处理 PDF 隐写、格式转换 |
四、完整解题命令与操作流程
1. 环境准备(Kali Linux)
# 安装必要工具(若未安装)
apt install binwalk foremost -y2. 核心操作步骤
# 1. 扫描图片中的隐藏数据
binwalk image.png
# 2. 分离提取隐藏的 PDF 文件
foremost image.png
# 3. 进入输出目录查看提取结果
cd output/pdf/
ls # 查看提取出的 PDF 文件(如 00000001.pdf)3. 在线解码操作
- 访问:https://tools.pdf24.org/zh/pdf-to-txt
- 上传
output/pdf/目录下的 PDF 文件 - 执行转换并下载 TXT 文件
- 打开 TXT 文件,复制其中的 Flag
五、最终 Flag
flag{625d7f13d1646c3ab86be95a6ee05dd9}六、拓展与避坑指南
1. 避坑要点
- 若 foremost 提取的 PDF 仍为空,可尝试使用
binwalk -D 'pdf:application/pdf' image.png -O extracted_pdf/命令,精准提取 PDF 数据 - 在线工具解码失败时,可使用本地工具(如
pdftotext命令)转换:pdftotext extracted_pdf/00000001.pdf output.txt,再查看 output.txt
2. 拓展学习
- 学习 binwalk 的高级用法:
binwalk -E image.png可视化文件结构、binwalk -dd "pdf" image.png仅提取 PDF - 了解其他隐写类型:图片 Steg 隐写、音频 LSB 隐写、文档元数据隐写等