📌 题目信息
| 项目 | 内容 |
|---|---|
| 题目名称 | LSB |
| 题目来源 | BUUCTF |
| 题目类型 | MISC / 图片隐写 |
| 子分类 | LSB(最低有效位)隐写 |
| 考点 | LSB隐写原理、StegSolve通道提取、二维码扫描 |
| 难度 | ⭐⭐ |
| 最终 Flag | flag{1sb_i4_s0_Ea4y} |

🛠️ 使用工具
- StegSolve(核心工具,用于 LSB 隐写提取)
- QR Research(用于扫描提取出的二维码图片)
📝 解题思路
这道题的核心是 LSB(最低有效位)隐写。与“镜子里面的世界”类似,Flag 被隐藏在 RGB 三个通道的最低位中。但本题的特殊之处在于:提取出的数据是一张二维码图片,需要再用二维码扫描工具读取才能得到最终 Flag。
💡 LSB 原理回顾:LSB(Least Significant Bit)通过修改每个像素点 RGB 颜色分量的最低二进制位来隐藏信息,而人眼不会注意到这种微小的颜色变化。本题将一张二维码图片的每个像素点的二进制数据,拆分写入到了原始图片的 RGB 通道最低位中。
第 1 步:下载并解压附件
从 BUUCTF 平台下载题目附件,解压后得到一张图片文件(png 格式)。
第 2 步:快速检查(排除法)
在深入分析前,先用常规手段快速检查,排除其他可能性:
| 检查项 | 操作 | 结果 |
|---|---|---|
| 图片属性 | 右键查看属性/详细信息 | 无有用信息 |
| binwalk 分离 | binwalk -e --run-as=root image.png | 无额外文件 |
| strings 提取 | strings image.png \| grep flag | 无结果 |
| 十六进制编辑器 | 查看文件末尾 | 无附加明文 |
结论:排除文件拼接和明文附加,确定为 LSB 隐写。
第 3 步:用 StegSolve 打开图片
运行 StegSolve,点击 File → Open,导入题目图片。
第 4 步:进入 Data Extract 功能
点击菜单栏的 Analyse → Data Extract,打开数据提取窗口。
第 5 步:设置提取参数
在 Data Extract 窗口中:
- 将 Red、Green、Blue 三个通道的 Bit Plane 全部设为 0(即提取每个通道的最低有效位)。
- 将 Bit Order 设置为 LSB First。
- 将 Bit Plane Order 保持为 RGB。

⚠️ 注意:如果 Preview 没有显示清晰的内容,可以尝试切换 Bit Order(MSB First / LSB First)或调整通道组合。
第 6 步:预览并保存提取结果
点击 Preview 按钮,预览区域会显示提取出的隐藏信息。
在本例中,预览区域显示的是一张二维码图片(因为文件头是png)。
- 点击 Save Bin 按钮。
- 将提取的数据保存为
flag.png(或其他.png文件名)。
第 7 步:扫描二维码获取 Flag
使用 QR Research 打开上一步保存的二维码图片:
- 打开 QR Research。
- 点击 “打开图片” 导入
flag.png。 - 工具会自动识别并解码二维码内容。

扫码得到flag{1sb_i4_s0_Ea4y}。
⚠️ 注意:Flag 中的
1sb是数字 1 而非字母l;i4中是数字 4 而非字母a;Ea4y中是数字 4 而非字母a。
🏁 最终 Flag
flag{1sb_i4_s0_Ea4y}
💡 拓展:LSB 隐写的变体
| 变体类型 | 说明 |
|---|---|
| 文本 LSB | 直接将明文字符串隐藏在 LSB 中(如“镜子里面的世界”) |
| 图片 LSB | 将一张图片(如二维码)的像素数据隐藏在 LSB 中(如本题) |
| 音频 LSB | 将信息隐藏在 WAV 音频文件的样本数据最低位中 |
| 多通道组合 | 可能只使用 Red 0 通道,或使用 Red 0 + Green 1 等组合 |
【图片隐写】LSB&spm=1001.2101.3001.5002&articleId=163572311&d=1&t=3&u=bd95f43dbd1642b9a559cd7ff680556f)
402

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



