CVE-2012-0158是一个比较有名的老漏洞了,这次从论坛上找到一个poc文件,利用这个poc来分析CVE-2012-0158漏洞的形成。

http://bbs.pediy.com/showthread.php?t=207638

参考自此帖子,但是分析是个人独立完成的,只是参考了poc并没有抄袭思路。

本文步骤:重现漏洞-->漏洞分析-->漏洞利用-->总结

1.重现漏洞

打开poc文件,结果如图

环境如下

如图可见漏洞复现成功,弹出一个计算器。

2.漏洞分析

通过已有的POC找出漏洞产生的原因。

首先定位shellcode在内存中的地址,这里使用的是通过对api下断点找到shellcode的地址。

如图。可见此时shellcode已在栈中。00121461即为栈中空间,从3个nop起为shellcode

在此时看一下栈的整体结构,如下图

4个byte的nop之后接的便是shellcode,根据栈溢出的特点我猜测,7FFA4512为覆盖栈返回地址的地方。跟一下发现如图

原来7FFA4512处是一个jmp esp

这是一个常见的栈溢出跳板。据此我判断这是一个使用跳板地址覆盖栈返回地址的栈溢出,而且此时的esp正好指向shellcode的起始位置,4个byte的nop用来

抵消retn 0x8造成的esp下移。据此栈示意图如下

接下来查找是哪里发生的覆盖,因为是当前函数的栈祯发生溢出,说明肯定是子函数或者当前函数导致的覆盖。但是本栈祯已经被覆盖的一塌糊涂了,怎么知道这个函数的地址呢?

那么就只能对栈进行回溯,正好可以发现一个已经用过的函数返回地址,找到发生溢出的这个栈祯。经过单步跟进最终发现产生问题的语句在这里,如图

可见是一个rep movs导致的溢出。

如图可知溢出函数处于mscomctl模块

最新文章

  1. 树莓派 基于Web的温度计
  2. Update Request
  3. mysql优化案例分析
  4. java.lang.NoClassDefFoundError:TagSupport
  5. Android --#字XO小游戏
  6. myEclipse中新建的项目导入到Eclipse之后项目出现一个红色的叉叉
  7. HDU 4022 Bombing(stl,map,multiset,iterater遍历)
  8. powerpoint2015如何调整PPT立体图形
  9. POJ 3709 K-Anonymous Sequence (单调队列优化)
  10. Bash的数组
  11. Kubernetes e2e test and test framework
  12. centos7下kubernetes(17。kubernetes-回滚)
  13. caffe.pb.h丢失问题解决方法
  14. pom.xml 如果使用 mvn exec:exec 命令运行项目
  15. 'Settings' object has no attribute 'TEMPLATE_DEBUG' 的解决方法
  16. YQCB冲刺周第三天
  17. 网页采集利器 phpQuery
  18. 「小程序JAVA实战」微信小程序工程结构了解(五)
  19. html、css和js原生写一个模态弹出框,顺便解决父元素半透明子元素不透明效果
  20. loadrunner脚本中写入脚本输出log到外部文件,分析参数取值方式

热门文章

  1. php 阿拉伯数字转中文
  2. 洛谷P1455 搭配购买
  3. phpstorm 自定义属性没语法提示的问题
  4. 前端PHP入门-019-内置函数之数学函数-很重要
  5. horizon源码分析(二)
  6. linux ll 命令参数详解
  7. jQuery Mobile基本UI组件
  8. IO流-文件拷贝
  9. 【leetcode 简单】第十一题 搜索插入位置
  10. Linux终端提示符PS1设置(颜色)