盒子
盒子
文章目录
  1. 前言 :
  2. 正文 :

CVE-2010-3333

前言 :

晚上本来还想搞一下阿里旺旺的那个栈溢出的,但是原先研究过一遍的cve今天还是出了些问题来着,所以说还是重新来了一遍。

正文 :

直接把poc拖到word上,附加上进程,发现程序崩溃在:

68909CFF-A185-4946-AE12-CBA9D30AB9D8

在此下断点,重新运行,查看一下edi和esi寄存器各自所存的内容:

CC101937-A722-4EB3-B3F0-6B50C76FA45D

可以看到esi中疑似垃圾数据,在和十六进制形式的poc文件做一下对比:

5576CF42-1A96-48A9-9CB5-D9233CD3C336

与选中的数据刚好一致,所以可以发现漏洞点在此处,此处可以自行构造payload。且此时ecx的值也与当中的acc一致,所以可以猜测acc8就是复制的次数。栈回溯看看调用它的函数:

5BC265D9-C39B-4966-81D6-0D0D6FE98163

这里的坑点找了很久,ub和u的区别就是b,这里的b可以看作back,相当于显示前面部分的汇编代码,u就是单纯的显示汇编代码,从当前开始往后显示,uf是显示该函数所有汇编代码。而这里调用函数基本是ub的最后一个代码段就是调用函数了。所以此处的调用函数是0x30f4cc5d,在0x30f4cc5d下断点,重新运行程序:

单步步过(p):

E886E8FC-A737-4D81-99FC-D5487D89C955

运行到此处,单步步入(t):

78DD5735-5210-4110-BBAE-5A40DB757437

随后就进入到了所在的溢出点的地方了。整个执行流程是清除了,来看看溢出的流程,往下走(得换一个不能使得程序崩溃的文件才能继续执行):

5427C8C3-16C6-44AC-958B-B21604DE4299

框住的为返回地址,箭头为执行完后esp所指向的地址,往下:

5E84805D-7524-4996-8EF8-981391B961A1

跳转了一处,随后又pop了一下,继续往下:

9DB96E35-FDD9-4E9B-AEF5-CE7C7085EF29

又pop了几处,然后leave,ret返回地址为0x7ffa4512,此样本为我修改过后的,这个地址是jmp esp的地址,第二个方框为执行完指令后esp所指向的地址。往后就是弹方框的shellcode了。所以就可以根据上面的执行流程来构造出我们想要的payload了。需要改动的地方就那么几处。注意的点就是jmp esp往后的地址需要填充0,不然会执行不了程序,具体的原因我也不清除,可能是污染了后面的元素吧。改动后的恶意文档:

EC5499AB-0D6D-4C6C-A1D2-D9A2A06FEABF

这里还得了解一下rtf文档的格式标准:

具体参考

再来看看后面所执行到的函数栈:

FD320C87-068B-49E6-BCB4-C959FE6DB27C

只有20栈空间,所以复制足够多就能覆盖掉返回地址。

支持一下
扫一扫,支持v1nke
  • 微信扫一扫
  • 支付宝扫一扫