欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[原创]CVE-2011-0104 栈溢出分析与复现 学习笔记

[原创]CVE-2011-0104 栈溢出分析与复现 学习笔记

漏洞战争学习笔记,希望各位指正一下我的错误,以此为目的写这篇文章,因为很多错误自己发现不了
0x00 分析

使用Abysssec组织的exploit做为调试样本,首先打开excel --> attach execel.exe --> 按f9运行 --> 打开exploit文件。程序断下在0x300ce361 处:

向上栈回溯代码:

看到产生错误的代码的调用函数是sub_300ce252


在此处下断点,重新运行程序,看到此时的栈顶是0x0013aa90,也就是该函数的返回地址。

在0x0013aa90处下内存写断点,以便跟踪到覆盖函数返回地址的命令:



在函数返回值处下断点,按f9,断下,看到0x300ce3c8处循环复制数据到栈上,此时的edi地址是0x0013aa9b,ebp的地址是0x0013aa3b,栈空间为0x60。推断是栈空间溢出导致数据覆盖了栈数据照成异常0x300ce361处eax的数据异常造成异常退出。现在我们的目标是先弄清楚函数间的关系,然后调试exploit使之正常运行。


单步执行代码至return处,此时的esp值为0x001379ec。


通过回溯代码可以看到这个函数为sub_300ce380


可以看到这个函数sub_300ce380被0x00306df0dc处调用


重新加载excel.exe,到sub_300ce252函数f8单步执行,看看是哪个函数导致了覆盖函数返回值,顺便理清sub_300ce380和sub_300ce252的关系:


可以看到执行sub_306deefe之前,函数返回地址0x0013aa90的返回值是正常的,执行之后:


返回地址被修改为shellcode了。说明是sub_306deefe函数出现问题,于是重新加载execel.exe 进入该函数单步执行,在0x003060dc处发现了函数sub_300ce380。

说明是 sub_300ce252 调用了sub_306DEEFE然后调用了sub_300CE380。

分析完大致可以了解了导致溢出的过程。

接下来就是调整shellcode使shellcode正确执行的过程。

0x01 复现

同时定位函数返回值为0x3042232,2bb0


注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功