CTF数据安全学习:杂项第二课,LSB图片隐写
原创
森林之家zbs
森林之家zbs
allby森林之家
2026年11月10日 17:22
福建
去阅读
CTF数据安全学习:杂项第一课,从识破伪装开始留了个互动小彩蛋:一张 1080P 的图,理论上能塞下多少个字符的 flag?
揭晓答案:1920 乘 1080 是 207 万个像素,一个像素红绿蓝(RGB)三通道,合起来 622 万个比特位。最后再除以 8,也就是77.7 万字节—— 759KB。
这是个什么概念?你手机相册里随便一张壁纸,理论上能塞 77 万个字符——按一个字符一个字节算,够装五十多篇五千字的中文长文;
而一个Flag 才几十个字符,就藏在每个像素的\"最低位\"里!今天这篇文,我就把Flag亲手藏进图片里(用 Python 手写 LSB 隐写和提取脚本),再亲手挖出来找到答案,全程真实运行输出。
【渗透测试与技术学习仅限授权环境与靶场,这是红线】

能分出哪张被动了手脚吗?分不出来就对了。看数据:27 万个像素里只有 66 个发生改变,单通道最大差 1,平均每个像素的色差 0.0004——这个量级,人眼压根感知不到。
挖出来:顺着最低位往回读
藏是替换最低位,取就反过来读:逐像素抽出最低位,8 个比特拼一个字节,读到结束标记停。
提取脚本真实运行输出:
[+] 图片尺寸:(520, 520) [+] 提取到的消息:CTF{L5B_1s_My_5t3g0_Fr13nd}
一比一对上,flag 出炉。藏和挖就这么点事,方向反着来,逻辑一模一样。
有意思的是下一步:防守的人,怎么发现一张图被动过?
瞒得过眼睛,瞒不过\"位平面\"
这里讲一个考场常用的检测思路:位平面分析。
把某个通道(比如红色 R)所有像素的最低位单独抽出来,0 和 1 铺成一张黑白图——专业说法叫\"R 通道 LSB 位平面\"。
正常图片的位平面长什么样?均匀的雪花噪点——因为自然照片的最低位本来就近似随机。
我往同一张风景图里写入 3 万字节的载荷(0xAA 循环填充),再抽出 R 通道位平面,差别一眼可见:
图的上半部分冒出齐刷刷的暗带——那正是载荷铺过的区域,跟下半部分的自然噪点泾渭分明。载荷越满、越规整,位平面里的\"案发现场\"就越清楚。StegSolve 的通道分析页,干的就是这件事。
再往深一步,统计检测(卡方分析、RS 分析)连肉眼看不出来的少量嵌入都能揪出痕迹——这门\"找隐写\"的学问,行话叫隐写分析(Steganalysis)。所以 LSB 瞒的是人眼,瞒不过懂数据统计的机器。
考场工具箱:zsteg、StegSolve、steghide
手写脚本是练习,比赛还得靠工具。
我按使用场景给大家分个工:
zsteg:PNG 和 BMP 的 LSB 盲扫器,一条命令把各种通道组合、扫描顺序全试一遍。输出里 b1,r,lsb,xy 这种字段就是它当前试的组合——比特位、通道、方法、扫描顺序,照着格式读,扫到明文它直接给你吐出来。
StegSolve:可视化分析器,通道位平面逐个翻、Data Extract 手动调参数、GIF 逐帧看。zsteg 盲扫没结果时,用它手工排查变种。
steghide:主攻 JPEG、BMP 和音频,嵌入时能设口令。注意,JPEG 是有损压缩,直接动最低位会被压缩洗掉,所以 JPEG 里藏东西走的是另一条路——改 DCT 变换系数,steghide 就是这条路的代表工具。
出题人的变种无非在这几处:换通道(R/G/B/Alpha)、换扫描顺序(先行后列还是先列后行)、乱序嵌入(拿密钥做随机数种子决定写入位置)、先加密再嵌入(挖出来还得再解密一层)
现实里的水印与取证
版权水印:不少图片平台的\"隐形水印\",底层就是类 LSB 思路——把用户标识写进像素低位,图片被截图搬运,只要没被反复重压缩,扫一遍低位还能溯源到上传者,维权取证全靠它。
攻防取证:攻击者把敏感数据藏进图片低位,混在相册流量里往外带,网关不扫低位就发现不了夹带;防御方做取证时,恰恰要重点盯图片低位——藏的和挖的用同一片地基,拼的就是谁更熟。
手写实现,核心就两行
藏(最低位清零,再塞进消息比特):
new = (value & 0xFE) | bit
取(把最低位抠出来):
bit = value & 1
跟CTF数据安全学习:杂项第一课,从识破伪装开始的手写魔数扫描器一个道理:工具按回车谁都会,原理长在脑子里才是硬实力。
平时练手,建议你照这两行把藏和挖各写一遍,跑通后你就对\"像素\"这两个字的理解,就比只会按工具的人深一层。
LSB 真正要防的对手是统计检测,先把消息加密再嵌入,让挖出来的人只能看到一堆乱码;因为LSB 只活在 PNG、BMP 这类无损格式里,JPEG 只要存一次就能把你藏的东西抖得粉碎~
【本文实验均为本地构造的教学靶题,仅用于学习,这是红线】
【小彩蛋】
今日小问题——评论区可以猜猜看:
一个 ZIP 设了 6 位纯数字密码,暴力破解最多要试多少次?
一张1920x1080 的照片理论上最多能藏下多少字符?
【最后封面图给各位送上】
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论