📌 题目信息
| 项目 | 内容 |
|---|---|
| 题目名称 | 镜子里面的世界 |
| 题目来源 | BUUCTF |
| 题目类型 | MISC / 图片隐写 |
| 子分类 | LSB(最低有效位)隐写 |
| 考点 | LSB隐写原理、StegSolve通道提取 |
| 难度 | ⭐⭐ |
| 最终 Flag | flag{st3g0_saurus_wr3cks} |
🛠️ 使用工具
- StegSolve(核心工具,用于LSB隐写提取)
- zsteg(备用方案,命令行工具)
📝 解题思路
这道题的核心是LSB(最低有效位)隐写。图片中的英文look very closely(仔细观察)暗示了信息隐藏在不易察觉的地方。解题的关键是使用 StegSolve 提取 RGB 三个通道的最低位(0通道)数据。
💡LSB原理:LSB 全称为 Least Significant Bit,即最低有效位。它通过修改每个像素点 RGB 颜色分量的最低二进制位来隐藏信息,而人眼不会注意到这种微小的变化(具体看补充)。
第 1 步:下载附件并初步检查
下载题目附件,解压后得到一张图片(通常为.png格式)。
可以先做快速检查:
- 查看图片属性,无有用信息
- 用
binwalk、foremost分离,没有额外文件(具体看补充) - 用
strings或十六进制编辑器查找flag,无结果
这些常规方法都无效,说明信息是通过 LSB 隐写隐藏在像素中的。
第 2 步:用 StegSolve 打开图片
运行StegSolve,点击File → Open,导入题目图片。
第 3 步:进入 Data Extract 功能
点击菜单栏的Analyse → Data Extract,打开数据提取窗口。
第 4 步:设置提取参数
在 Data Extract 窗口中:
- 将Red、Green、Blue三个通道的Bit Plane全部设为0(即提取每个通道的最低有效位)。
- 勾选LSB First(如果 Preview 无结果可以尝试切换MSB First)。
- 点击Preview按钮预览提取结果。
此时,预览区域应该会显示隐藏的 Flag 信息。
⚠️注意:如果在 Red/Green/Blue 的 0 通道看到图片左上角出现异色点或文字,就说明是 LSB 隐写。
🔧 备用方案:使用 zsteg(命令行)
如果 StegSolve 不可用,也可以使用zsteg工具一键提取:
zsteg steg.png --all或者提取特定通道:
zsteg -e b1,rgb,lsb,xy steg.pngzsteg会自动检测并输出隐藏信息。
⚠️ 常见陷阱
特别注意:提取出的 Flag 中,st3g0_和saurus之间有一个空格。提交时需要删除这个空格,否则会报错。
- 提取结果可能显示为:
st3g0_ saurus_wr3cks❌ - 正确格式应为:
st3g0_saurus_wr3cks✅
🏁 最终 Flag
flag{st3g0_saurus_wr3cks}⚠️注意:Flag 中的
st3g0是数字 0而非字母o。