以下是专门针对 CTF隐写术(Steganography) 的解题思路与步骤树形图,包含常见分类、工具链和关键方法:
CTF隐写术题目解题思路图
隐写术(Steganography)
├── 1. 图片隐写(Image Steg)
│ ├── 1.1 LSB隐写(最低有效位)
│ │ ├── 步骤:StegSolve逐通道分析,提取LSB数据。
│ │ └── 工具:StegSolve、zsteg、Python PIL库。
│ │
│ ├── 1.2 文件结构隐写
│ │ ├── 步骤:Binwalk扫描隐藏文件,dd/foremost分离。
│ │ └── 工具:Binwalk、Foremost、010 Editor。
│ │
│ ├── 1.3 EXIF元数据
│ │ ├── 步骤:ExifTool检查注释、GPS坐标、创作时间。
│ │ └── 工具:ExifTool、在线EXIF查看器。
│ │
│ ├── 1.4 视觉密码学
│ │ ├── 步骤:叠加两张图片(XOR/AND操作),提取隐藏信息。
│ │ └── 工具:GIMP、Python OpenCV。
│ │
│ └── 1.5 颜色通道/透明度隐写
│ ├── 步骤:检查Alpha通道、分离RGB通道观察噪点。
│ └── 工具:StegSolve、GIMP。
│
├── 2. 音频隐写(Audio Steg)
│ ├── 2.1 频谱隐写
│ │ ├── 步骤:Audacity查看频谱图,识别隐藏文字或摩尔斯码。
│ │ └── 工具:Audacity、Sonic Visualiser。
│ │
│ ├── 2.2 波形隐写
│ │ ├── 步骤:观察波形规律,导出数据段并转换为二进制。
│ │ └── 工具:Audacity、Python波形分析脚本。
│ │
│ └── 2.3 回声隐藏(Echo Steg)
│ ├── 步骤:检测音频回声延迟和幅度,提取编码信息。
│ └── 工具:Deepsound、MATLAB音频分析。
│
├── 3. 视频隐写(Video Steg)
│ ├── 3.1 帧隐写
│ │ ├── 步骤:FFmpeg逐帧提取图片,按图片隐写方法处理。
│ │ └── 工具:FFmpeg、VLC播放器。
│ │
│ └── 3.2 时间轴隐写
│ ├── 步骤:检查视频时间戳异常或字幕隐藏数据。
│ └── 工具:MKVToolNix、SubtitleEdit。
│
├── 4. 文本隐写(Text Steg)
│ ├── 4.1 空白符隐写
│ │ ├── 步骤:显示不可见字符(如snow工具提取空格/Tab)。
│ │ └── 工具:snow、Hex编辑器、Notepad++显示所有字符。
│ │
│ ├── 4.2 字体/排版隐写
│ │ ├── 步骤:检查Unicode特殊字符、字体颜色/大小差异。
│ │ └── 工具:Microsoft Word“显示隐藏内容”、PDF-parser。
│ │
│ └── 4.3 文档元数据
│ ├── 步骤:检查Word/PDF的标题、作者、修订记录。
│ └── 工具:exiftool、pdfinfo、strings命令。
│
└── 5. 复合隐写(嵌套加密/编码)
├── 5.1 隐写+密码学
│ ├── 步骤:先提取隐写数据,再应用密码学方法(如Base64→AES解密)。
│ └── 案例:图片LSB提取到Hex数据,解密后得Flag。
│
└── 5.2 隐写+压缩包
├── 步骤:分离隐藏的ZIP/RAR文件,爆破密码(常用rockyou.txt)。
└── 工具:ZipCracker、fcrackzip。
隐写术通用解题流程
-
初步检查:
- 文件类型验证:
file
命令检查真实类型(如fake.jpg
实际是PNG)。 - 基础工具扫描:
strings
、binwalk
、exiftool
快速提取可疑数据。
- 文件类型验证:
-
分层分析:
- 第一层:元数据/文件结构(EXIF、隐藏文件)。
- 第二层:内容载体分析(图片通道、音频频谱、文本空白符)。
- 第三层:解码/解密提取的数据(Base64、Hex、古典密码)。
-
递归处理:
- 对分离出的文件(如压缩包)重复上述步骤,直到找到Flag。
关键工具清单
类型 | 工具 |
---|---|
图片隐写 | StegSolve、zsteg、GIMP、ExifTool、stegdetect |
音频隐写 | Audacity、Sonic Visualiser、Deepsound、MATLAB |
视频隐写 | FFmpeg、MKVToolNix、VLC |
文本隐写 | snow、Hex Editor、PDF-parser、Notepad++ |
自动化 | stego-toolkit(集成工具包)、StegCracker(爆破密码保护隐写) |
经典案例思路
案例1:CTF图片隐写(LSB+Zip嵌套)
- 用
binwalk
发现图片尾部附加ZIP文件,用dd
命令分离。 - 分离后的ZIP需要密码,用
fcrackzip -D -p rockyou.txt
爆破。 - 解压后得到文本文件,内容为Base64,解码后获得Flag。
案例2:音频频谱隐写
- 用Audacity打开音频,查看频谱图发现摩尔斯码“… — …”。
- 解码摩尔斯码为“SOS”,结合提示拼接为Flag格式
flag{SOS}
。
注意事项
- 观察异常:文件大小不合理(如图片3MB但内容简单)、颜色通道异常噪点。
- 多工具交叉验证:StegSolve未发现数据时,尝试zsteg或手动脚本分析。
- 脑洞要大:CTF隐写可能隐藏在意想不到的位置(如GIF帧间隔时间编码)。