Metasploit
490K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2W2P5s2m8D9L8$3W2@1i4K6u0V1k6r3u0Q4x3X3g2U0L8$3#2Q4x3V1j5`.
4b5K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2K6k6h3y4#2M7X3W2@1P5h3k6G2j5%4g2K6i4K6u0W2j5$3!0E0
四:漏洞复现:
首先启动WORD,然后打开OD,附加WORD;

然后用WORD打开poc文件,此时会触发漏洞,观察OD;此时eip已被修改位41414141,观察堆栈情况,可以看出栈中的函数返回地址被修改位41414141;堆栈上方观察到一个来自MSCOMCTL模块的地址,反汇编窗口跟随查看;

根据反汇编窗口函数指令,找到函数起始位置下断点,然后F8动态调试,同时观察堆栈情况,找到触发栈溢出的指令或Call的调用;

经过F8动态调试分析,发现执行完CALL MSCOMCTL.275C876D 函数后,堆栈中函数返回地址被修改,说明这个函数内部触发了栈溢出;

用010Editor打开poc文件定位到414141位置;并结合OD的堆栈情况和IDA对
MSCOMCTL.275C876D 函数的分析,可以看出poc文件中的8282是缓冲区长度。此值设置过大导致下面调用qmemcpy函数发生溢出;


五:漏洞利用
我们将上述41414141改为jmp esp指令的地址,同时调用溢出函数的函数平衡堆栈时有ret 8,所以shellcode的起始位置应如下图所示:

接下来用WinDbg通过指令“!py mona.py jmp -r esp”来搜索合适的跳板指令;如图所示,这里我们选择0x729a0535作为跳板指令;
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课