📌 题目信息
| 项目 | 内容 |
|---|---|
| 题目名称 | [GUET-CTF2019]soul sipse |
| 题目来源 | BUUCTF(GUET-CTF 2019) |
| 题目类型 | MISC(杂项) |
| 子分类 | 音频隐写 / 文件修复 / Unicode编码 |
| 考点 | Steghide隐写、PNG文件头修复、Unicode解码 |
| 难度 | ⭐⭐ |
| 最终 Flag | flag{5304} |
🛠️ 使用工具
- Steghide—— 音频文件隐写提取
- 010 Editor—— 十六进制查看与文件头修复
- 在线Unicode解码工具—— 如
https://tool.chinaz.com/tools/unicode.aspx
📝 解题思路
题目名为“soul sipse”,附件是一个
.wav音频文件。用 Audacity 打开听不出明显异常,用 binwalk 也分离不出东西——这时需要考虑Steghide隐写(Steghide 支持 WAV 格式的隐写)。
第 1 步:使用 Steghide 提取音频中的隐藏文件
在 Kali Linux 中使用 Steghide 分析out.wav文件:
# 查看音频中是否隐藏了文件 steghide info out.wav # 提取隐藏文件(无需密码,直接回车) steghide extract -sf out.wav
执行后成功提取出download.txt文件。
查看download.txt内容,发现里面是一个腾讯微云分享链接:
https://share.weiyun.com/5wVTIN3第 2 步:下载图片并修复文件头
访问该链接,从腾讯微云下载一张图片GUET.png。
打开图片时无法正常显示。用010 Editor打开该图片,发现PNG 文件头被篡改。
正确的 PNG 文件头应为:
89 50 4E 47
将文件开头的错误字节修改为89 50 4E 47,保存后图片即可正常浏览。
⚠️注意:PNG 文件头固定为
89 50 4E 47 0D 0A 1A 0A,但最关键的标识是前 4 字节89 50 4E 47。修复时务必确认修改位置正确。
第 3 步:获取图片中的 Unicode 编码
修复后的图片中显示了一段Unicode编码的文本:
\u0034\u0030\u0037\u0030\u000d\u000a\u0031\u0032\u0033\u0034\u000d\u000a第 4 步:Unicode 解码
将上述 Unicode 编码粘贴到在线Unicode解码工具中进行解码。
Pasted image 20260718144052.png
解码后得到:
4070 1234第 5 步:相加得到 Flag
将解码得到的两个数字相加:
4070 + 1234 = 5304这里之所以会想到相加,是多次尝试 + 观察规律的结果,因为题干没有给别的算法提示,而竖排两个数字最自然的联想就是“加法竖式”,且试出来后结果(5304)能完美契合 Flag 的提交要求。
还可以对这两个数字进行常见的二元运算尝试:
- 拼接:
40701234(提交失败或不符逻辑) - 相减:
4070 - 1234 = 2836 - 异或(XOR):
4070 ^ 1234 = 21060(数字过长,不像是简单的 4 位 Flag) - 相加:
4070 + 1234 = 5304
其实这里也没有其他原因,就是出题人当时想着要相加的。
按题目要求包上flag{}提交。
🏁 最终 Flag
flag{5304}