CTF | 那些比较好玩的stego(续一)

本尊觉得文章太渣,请各位大牛不要转载,投稿事宜请直接私信本人,反正这篇我也不打算给你?

题记:记得是今年5月份,那时候CTF生涯刚告一段落,抓紧给队友总结misc(“你这篇文章写的还可以要不就投个稿挣点稿费?”,此处省略一天的准备过程)然后就(黑历史,又省略几千字),记得那篇文章中曾经提到过:

exe:

exe里藏东西其实还涉及到病毒行为分析,有可能是藏在壳内,也有可能是其他地方,具体情况可以使用IDA或者OD还有C32Asm来进行跟进分析。

为啥要提这个呢?因为八月份的时候做了一道题,这么有参考价值的题目我当时还是第一次见到——

可能很多小伙伴看过这道题,X-NUCA的re专场的一道题……

这道题后来官方也放了思路了,脑回路对了但我后来走了歪路……

知道放出来的时候会扯到很多事,因为已经有官方wp了再说也不合适了嘛,而且我写稿写的比较烂这个很多人都知道了,嗯,就自娱自乐吧。

开始!


首先看题目,找到程序中的二维码,从“二维码”这儿可以推断出来可能是加密了某个字段或者是直接塞了张什么png进去吧。嗯,首先先运行一下(大雾),然后就关机了,关机了……

还好挂的是虚拟机

我们来继续看题。

对不起剧本拿错了……

WMProtect这个壳当时的我还不是很熟悉,虚拟机的壳,我只熟悉一系列压缩壳……

本着不要怂就是干的原则,我百度了一下VMProtect的原理:

VMProtect 是新一代的软件保护系统,将保护后的代码放到虚拟机中运行,这将使分析反编译后的代码和破解变得极为困难。使用 MAP 文件或内建的反编译引擎,您可以快速选择需要保护的代码。

虚拟机保护壳?算是吧。拖进IDA后,反正我也没看懂……

.text啥的都没有,那就……换个工具……

先跑起来让人家舒展一下顺便看有什么变化

到这儿就THE END

你问我再然后?再然后是这样——


所以应该是哪一步出了问题,还有在这儿只是出于好奇心,平时运行的时候F8就行了,这儿是有硬件断点的所以别瞎点F9……


本着在哪儿跌倒就在哪儿爬起来的原则,我又把虚拟机打开了……

再打开OD,再找到那个文件,再重新来,到哪步就运行来着?最后一步,好像是栈窗口有个readonly……

这里就相当于直接运行了,难怪直接就关机,那我们就停在上一步吧

直(du)觉(niang)告诉我,可能附近有惊喜,然后Ctrl G:

其实右下角的堆栈窗口也告诉你该输啥了:VrtualProtect,然后我当时是定位到call VirtualProtectEx的那一步就用StrongOD detach了一下就没关机了……

其实到了这一步可以直接dump,但是会无效OEP,入口地址弄错了……准确的说,那里不是本程序的OEP只能说是壳的入口,会出事的。

继续Ctrl G 填401000(也算是在420000这个地址的附近开始查找OEP吧),程序是C/C++,Ctrl S填写入口特征:

这儿就是OEP了吧,然后令此处为新EIP,然后就开始dump吧,p.s. 这儿就没有该死的OEP无效的提示了

(论好好读书的重要性……)

dump完之后——

其实到了这儿还没有脱完,按照常规的VMProtect的调性的话我们还需要进一步去分析加密算法还有其他的一些可能拖后腿的东西。我也是被这一步直接给带到了沟里,因为检验是否还有残留加壳的时候我多虑了一步,看到了很多.vmx还以为自己没把壳脱干净。曾经有个大神说市场上的VMProtect能脱出来个70%就很不错了。后来就在IDA里用Shift F12查看字符串,找啊找……



也没找到那个二维码在哪儿……



然后我就没再碰过那道题

赛后的wp出来了,我去瞄了眼,前面的脱壳过程没错但是:

一般CTF这种比赛是不用花时间去脱这种壳的。所以我们直接dump内存即可。

继续上一步,Shift F12我爱看到了什么?

除了那个什么BrinkPoint 加上摩斯密码的,然后我还看见了一堆这个样子的

反正我也不认识那堆编码,我以为有交叉引用于是我整个Ctrl X了一遍也没看出来到底是啥

或许我道行太浅,还需要再修炼修炼

开头部分iVBOR很明显是个Base64编码的图片(PNG)格式。使用相关工具还原即可,扫描二维码即可获得flag。

把题解看到这儿的我,最后也没还原出来这个二维码,这大概就是人生吧……


鸣谢:

vmp破解总结 - 经营企划

X-NUCA(牛咖)联赛8月逆向专题赛赛前--寻找二维码的解题思路

编辑于 2016-11-06

文章被以下专栏收录