小G的照片-Solution¶
正如题目背景所言,这道题确确实实是一道套娃题,没有耐心很难做完。
先看给出的图片,题目提到了是用的LSB隐写技术。
尝试Stegsolve工具查看,发现没有办法直接读出来。
看到提示中的链接,发现其加密方式比较奇怪。
不同于常见的LSB隐写方法将整个文本一起转换,这张图片是对于每个字符,通过ASCII转化成二进制后,补全为16位后写入
好在文章直接给出了解密方法,跑一下得到一个音频文件的链接。
Danger
音量爆炸,请适当调小音量,不要使用耳机
https://kmp.goodfish.site/xg.mp3
打开听了一下,发现像是噪声,但是明显有一些起伏变化。
因为是噪声,大概率不是MP3Stego一类的工具隐写的。
MP3Stego的检测可以看这篇专利,给了一种检测的方法(Google的,网络不好打不开可以搜专利号,实测国内可以打开2025-2-13)CN104282310A
既然不是不是MP3Stego,那么拖到Adobe Audition里面看下
波形没有什么特点,放大也看不出来二进制隐藏
既然不是波形,那大概率是频谱了
果然,打开频谱图发现了一个网址

下载下来放沙盘跑了下,发现要输入密码
随便输了个密码,发现会给一个Wrong answer的提示
可前面确实没有什么可以用的的线索,故而用x64dbg尝试爆破
已知的就一个密码错误和一个输入密码的提示,输入密码的提示离判断逻辑太远了
所以主要搜索Wrong answer
加载调试器后,发现调试器被Ban了

程序在正常情况下无法正常运行
在x64dbg中可以使用隐藏调试器的方式饶过检测(调试>高级>隐藏调试器/hide命令)
随后不断点击运行按键让程序跑起来
隐藏调试器后程序应当会在等待输入密码的地方停下
这个时候从工具栏可以搜索字符串Wrong answer

双击搜索到的跳转到汇编代码
发现是从一个je命令跳转过来的,再往上可以看到一个test命令比对
具体的逻辑这里不讲了,密码并没有加密,从右侧注释可以直接看到
Success
00007FF72C524060 4E 4A 46 44 4D 53 4A 44 46 53 4D 4A 4D 47 45 52 NJFDMSJDFSMJMGER
00007FF72C524070 44 46 4D 55 44 53 4D 55 44 46 43 00 57 72 6F 6E DFMUDSMUDFC.Wron
其中NJFDMSJDFSMJMGERDFMUDSMUDFC便是密码
输入后可以得到flg
Success
flg是flg{unc0nfused c0de 1s fr4g1le}
至于为什么不直接搜索flg,这是因为flg经过了加密,无法直接搜索出来。