2023年宁波天一永安杯MISC类型题目BeautifulImage 解题全过程
一、题目背景
- 赛事:宁波天一·永安杯 2023
- 题目类型:MISC(隐写术)
- 题目描述:
Cool Mountain flag{} - 目标:从图片中提取隐藏的 Flag
二、解题思路与过程
1. 工具选择:Zsteg
Zsteg 是一款专门针对 PNG/BMP 格式图片的隐写检测工具,能快速提取 LSB(最低有效位)隐写、通道数据等信息,是这类题目的首选工具。
2. 第一步:Zsteg 扫描图片
将下载的图片命名为 alps.png,在 Kali 环境中执行扫描:
zsteg /root/Desktop/alps.png输出结果:
b1,r,lsb,xy .. text: "Xv59 VX^D~\\99"
b1,rgb,lsb,xy .. text: "ZmxhZ3syNGVkZDc2ZTQ2YzIyYzY1Y2M1YmRkZDNjNmU0ZjZmM30="
b1,bgr,lsb,xy .. /var/lib/gems/3.1.0/gems/zsteg-0.2.13/lib/zsteg/checker/wbstego.rb:41:in `to_s': stack level too deep (SystemStackError)
from /var/lib/gems/3.1.0/gems/iostruct-0.5.0/lib/iostruct.rb:180:in `inspect'
... 10066 levels...这里我们重点关注 b1,rgb,lsb,xy 通道的输出,它是一段标准的 Base64 编码字符串:ZmxhZ3syNGVkZDc2ZTQ2YzIyYzY1Y2M1YmRkZDNjNmU0ZjZmM30=
补充说明:b1,bgr,lsb,xy报错是 Zsteg 的一个常见问题,不影响我们获取有效信息,可以直接忽略。
3. 第二步:Base64 解码获取 Flag
使用 base64 -d 命令对字符串进行解码:
echo "ZmxhZ3syNGVkZDc2ZTQ2YzIyYzY1Y2M1YmRkZDNjNmU0ZjZmM30=" | base64 -d解码结果:
flag{24edd76e46c22c65cc5bddd3c6e4f6f3}和题目描述中的 Cool Mountain flag{} 格式完全匹配,解题完成。
三、知识点总结
Zsteg 工具核心用法
- 基础扫描:
zsteg 图片名.png - 查看指定通道数据:
zsteg -a 图片名.png -v - 提取特定通道数据:
zsteg -E b1,rgb,lsb,xy 图片名.png > output.txt
- 基础扫描:
- 常见隐写编码格式
很多隐写题目会将 Flag 用 Base64/URL/HEX 等方式编码后隐藏在图片中,遇到乱码类的字符串,优先尝试 Base64 解码。 - Zsteg 报错处理
stack level too deep这类错误一般是工具内部的wbstego模块栈溢出导致,和图片本身无关,不影响其他通道的扫描结果,直接跳过即可。
四、完整解题命令集合
# 1. 扫描图片隐写信息
zsteg /root/Desktop/alps.png
# 2. 提取指定通道数据(可选,当输出过长时使用)
zsteg -E b1,rgb,lsb,xy alps.png > base64_flag.txt
# 3. Base64 解码
cat base64_flag.txt | base64 -d
# 或直接解码字符串
echo "ZmxhZ3syNGVkZDc2ZTQ2YzIyYzY1Y2M1YmRkZDNjNmU0ZjZmM30=" | base64 -d五、最终 Flag
flag{24edd76e46c22c65cc5bddd3c6e4f6f3}
