欢迎光临散文网 会员登陆 & 注册

【mugen】猴子也能看懂的mugen凶恶原理(2)——%f

2023-03-28 16:55 作者:珂字辈  | 我要投稿


4.         %f利用


通过上篇文章发现%n有个很大的缺点是只能任意地址写,不能任意地址读,因为DisplayToClipBoard和AppendToClipBoard本意是将debug信息复制到剪切板里的。因为现代电脑系统都有着ALSR保护,一些地址都是随机的,没有读我们就无法直接去写那些地址。

在pwn题中有个经典的利用方法就是劫持got表,mugen中应该劫持哪个got呢?%f给了我们答案。

参考Duang-Hell人物的12P.cns中的%f代码,一共分为三步。

1,%n技术在4B48E8地址写入4B4000

2,%n技术在4B4000地址写汇编

3,%f技术执行代码

毫无疑问,这一看就是got表劫持的漏洞利用方式,先看4B48E8上放了什么。


496651是什么呢?__cfltcvt()

%f是如何调用__cfltcvt()的呢?加入%f代码,用之前同样的跳到retn动态调试后,可以发现熟悉的调用链。

sub_46E800()

vsprintf()

_output()

off_4B48E8()

__cfltcvt()

那么%f本质上就是先用%n劫持了__cfltcvt()的got表,改写到4B4000,然后在4B4000地址上写入恶意汇编,最后%f触发之。

当然,mugen中一定还存在很多其他got表劫持的办法,但%f可以更稳定的触发,发现者可以说是非常厉害了。

我们先执行最简单的汇编,0x90也就是NOP。


我们在4713A9(call _vsprintf)下断点然后F9,可以清晰的看到依次利用%n改写内存。如下图,4B48E8改写完成,开始改写4B4000。

当4B48E8和4B4000都改写完成后,最后一次vsprintf执行%f。


此时断点4B4000,F9后发现NOP被成功执行。

那么就可以利用汇编做任何想做的事,在mugen中通常指击杀对方人物,这需要对mugen地址的研究,我这里就简单一点用一个弹计算器的shellcode,并且写好生成cns代码的python3脚本

msfvenom -p windows/exec cmd="calc.exe" exitfunc=thread -b "\x00" -f python

结果如下。



【mugen】猴子也能看懂的mugen凶恶原理(2)——%f的评论 (共 条)

分享到微博请遵守国家法律