攻防世界-Check

题目

描述:套娃? 下载附件下来是一个图片 ![[check.png]]

使用010editor查看,和正常图片对比也没有什么问题。

正常图片:

题目图片:

010editor看不出什么,但是题目只有一个图片的情况下,应该就是通过什么方法把信息隐藏在里面了。然后通过查阅资料,发现有一种隐写方式,称之为LSB隐写。具体如下:

LSB隐写

LSB 隐写 (Least Significant Bit Steganography) ,中文一般叫 最低有效位隐写术


基本原理

  • 数字文件(图像、音频、视频)本质上都是由二进制数据构成。

  • 在像素值、音频采样值等数据中,最低有效位 (LSB) 对整体感官影响很小。

    • 例如:一个像素的 RGB 分量是 10110010 (178),如果把最后一位改成 10110011 (179),人眼几乎看不出差别。
  • 因此,可以把要隐藏的信息(文本、密钥、图片等)的二进制位,逐个替换进这些最低有效位。


图像中的例子

假设一张 24 位真彩色图片,每个像素有 R、G、B 三个字节:

  • 原始像素:R=10110010, G=01011101, B=11001000

  • 如果要隐藏比特串 011,把每个颜色通道的最后一位替换掉:

    • R → 1011001010110010 (最后一位=0)

    • G → 0101110101011100 (最后一位=1 → 改成0)

    • B → 1100100011001001 (最后一位=0 → 改成1)

  • 人眼几乎看不出图片的变化,但其实里面藏了 011


解题

那么就再查资料,看一下这种隐写方式怎么处理。这里找到一个工具:StegSolve.jar 基于Java,在系统里安装适合版本的Java即可。

使用它打开图片,然后点击:Analyse → Data Extract 再勾选以下选项:然后点击 Preview 即可看到筛选的信息。再导出为txt,进行解码即可

这样,就得到flag:flag{h0w_4buT_enc0d_4nd_png}

题外话

为什么只需要查看plane 0?

1. 人眼对 LSB 不敏感

  • 一张彩色图片的每个像素通常由 8 位 R、8 位 G、8 位 B 三个通道组成。

  • 如果只改动最低有效位 (bit0),像素值最多变化 ±1(例如 178→179),人眼基本察觉不到差异。

  • 所以 最适合藏东西的位置,就是 LSB。


2. 信息容量与隐蔽性最佳点

  • 一张 1024×768 的图片 ≈ 78 万像素 × 3 通道 = ~235 万字节数据。

  • 如果只用 LSB,每个像素能藏 3 bit,总容量 ~293 KB,已经很可观。

  • 而且图像肉眼几乎不变。

  • 如果往更高 bit-plane(bit1、bit2...)藏,肉眼就可能看出色块、噪点 → 太显眼。

所以 plane0 是容量与隐蔽性的最佳折中点


3. 工具 & 出题习惯

  • 在 CTF/隐写分析中,出题人常常会用最常见的手法(R/G/B 的 plane0)。

  • 因为 plane0 一般就能显现出简单图案(文字、二维码),解题者只要用 StegSolve/zsteg 就能发现。

  • 当然,也有高难度题目会藏在 plane1、plane2,或者只藏在某个单通道(比如 Blue plane0),但「默认优先检查 plane0」是经验法则。


4. 为什么是"三原色的 plane0"

  • LSB 隐写一般不会改 alpha 通道(透明度),因为那很容易被肉眼察觉。

  • 所以目标锁定在 R/G/B。

  • 三个通道中任选一个甚至多个,放进去的隐藏信息,在 plane0 分解后会以黑白图像显现


总之,因为 LSB 隐写最隐蔽、最常用,而 plane0 正是最低有效位所在的平面,所以优先查看三原色的 plane0 最容易发现隐藏信息。

相关推荐
酷柚易汛智推官3 小时前
2025软件供应链安全实战:从漏洞修补到风险预测的转型指南
安全
代码充电宝3 小时前
LeetCode 算法题【简单】49. 字母异位词分组
java·算法·leetcode·面试·哈希算法
摸鱼的老谭3 小时前
Java学习之旅第一季-28:Java基础语法测试题
java·java基础测试
Brookty4 小时前
深入解析Java类加载与实例化流程
java·开发语言·学习
YSRM4 小时前
Leetcode+Java+图论+岛屿问题
java·算法·leetcode·图论
codecrafter1235 小时前
MATLAB中的while循环:从入门到精通的完整指南
java·数据库·其他·matlab
Zz_waiting.5 小时前
Spring AOP
java·spring·代理模式·springaop
没有bug.的程序员6 小时前
MySQL 安全与权限管理:从基础到生产级安全实践
java·mysql·安全·adb·权限
weixin_446260856 小时前
探索高效安全的去中心化应用——Solana区块链
安全·去中心化·区块链