📦 “分离”是什么意思?
在CTF中,出题人经常会把多个文件拼接(合并) 成一个文件。比如:
一张正常的图片.jpg + 一个藏着flag的压缩包.zip = 一个看起来是图片的文件
当你用图片查看器打开这个“合并文件”时,只会显示前面的图片部分,后面的压缩包数据会被忽略,所以你根本看不到里面还藏着东西。
“分离”就是把这个合并文件拆开,还原成原本的多个独立文件。
🛠️ binwalk 和 foremost 是干什么的?
| 工具 | 作用 | 特点 |
|---|---|---|
| binwalk | 分析文件中是否包含其他已知格式的文件(如 ZIP、RAR、Zlib 等),并可以提取出来 | 快速、准确,适合检测文件尾部拼接的文件 |
| foremost | 按照文件头(如 FF D8 FF 是 JPG 开头,50 4B 03 04 是 ZIP 开头)自动从文件中切分出独立的文件 | 适合“数据恢复”场景,即使文件被部分损坏也能尝试恢复 |
🔍 实际操作示例
场景:一张图片里藏了一个ZIP压缩包
- 使用 binwalk 检测:
binwalk picture.jpg
输出可能如下:
DECIMAL HEXADECIMAL DESCRIPTION
0 0x0 JPEG image data
40235 0x9D2B Zip archive data, at least v2.0 to extract
这表示:在文件的 40235 字节 处,检测到了一个 ZIP 压缩包的开始。
- 使用 binwalk 提取:
binwalk -e picture.jpg
执行后,binwalk 会自动把检测到的 ZIP 文件提取出来,放在 _picture.jpg.extracted 文件夹里。
- 使用 foremost 提取:
foremost picture.jpg
执行后,foremost 会按照文件头类型,把所有能识别的文件都提取出来(即使文件头被部分覆盖,也能尽可能恢复)。
![![[Pasted image 20260713154020.png]]](/https://i-blog.csdnimg.cn/direct/09cfa7bd07e54f16b971bfb49c94afe8.png)
![![[Pasted image 20260713154847.png]]](/https://i-blog.csdnimg.cn/direct/bf05bcfec2b14fc0a40f2dc9d1ecb61a.png)
❓ “没有额外文件”是什么意思?
在解题记录中,我写的“没有额外文件”是指:
经过 binwalk 和 foremost 分析后,发现这张图片 没有捆绑其他文件(如 ZIP、RAR、TXT 等),就是一张纯粹的图片。
这意味着:
- ✅ 题目没有采用“文件拼接”的隐藏方式。
- ✅ 接下来应该尝试其他方向的隐写(如 LSB、文件尾部字符串、图片高度修改等)。
📋 对于一个图片的快速检查的完整流程
- 查看图片属性 → 无有用信息
- binwalk 检测:
- 命令:
binwalk steg.png - 结果:只检测到 PNG 图片及其正常的 IDAT 压缩数据块,未发现额外文件拼接的迹象
- 命令:
- foremost 分离 → 未分离出其他文件
- strings / 十六进制检查 → 未发现
flag等相关字符串 - 结论:排除文件拼接和文件尾部附加信息,下一步尝试 LSB 隐写
🎯 总结
当你在解题记录中看到:
用 binwalk、foremost 分离,没有额外文件
意思就是:
我用专业工具检查过了,这张图片没有被拼接其他文件。接下来我们可以把精力放在其他隐写方向上(比如 LSB、文件尾部字符串、修改图片高度等)。
这是一个标准的“排除法”步骤,目的是快速缩小解题范围。
【补充】用 binwalk、foremost 分离文件&spm=1001.2101.3001.5002&articleId=163543693&d=1&t=3&u=5590d354f5e448c2a780201b3b76fee9)
377

被折叠的 条评论
为什么被折叠?



