hu1y40's blog

hu1y40'blog
天堂的穹空遍布地狱之火的颜色,但也是天堂。
  1. 首页
  2. 书籍阅读
  3. 正文

CVE-2012-1876 Internet Exporter MSHTML.dll CalculateMinMax堆溢出漏洞

2023年10月7日 1360点热度 0人点赞 0条评论

实验环境

推荐使用的环境 备注
操作系统 Windows 7
虚拟机 Vmware
调试器 WinDbg
反汇编器 IDA Pro
漏洞软件 IE 8 8.0.7601.17514

动态分析

首先gflag给ie +hpa来开启页堆。

然后附加IE进程,打开poc文件。

fig:

中断和书中的CTableColCalc::AdjustForCol有区别,可能是IE版本和符号表带来的影响。

回溯栈如图。

fig:

ub查看当前eip上方汇编,发现edi来自于esi。

fig:

这里其实符号表有误,导致和书上并不相同,后续我重新加载了一次符号表。

crash在这

fig:

上一级函数为mshtml! CTableLayout::CalculateMinMax所以在这里打一个断点,重新载入。

fig:

查看传入给该函数的参数。发现参数一引用的是CTableLayout对象,也就是<table>标签在内存中的对象。

fig:

这里ebx+54h指向的是table标签中的col元素的span属性值。

fig:

查看CImplAry::EnsureSizeWorker函数

fig:

该函数会分配spanSum*0x1c的空间,但是分配的空间大小最小为0x70,此处分配的是0x70大小。分配到内存地址会保存在CTableLayout+0x90+0xC中。

。。。写了半天蓝屏了,没保存,不过本身这类资料够多就不重新写了。

随后调用poc的over_trigger函数,重新设置span=1000,这里的span会导致AdjustForCol函数以1000*0x1c为计数器循环的像第一次分配到0x70大小的heap中写入数据从而造成堆溢出。

总的流程如下:

  1. 页面加载CalculateMinMax被调用,col的span属性被初始化为1,此时spansum=1,spancmp=0
  2. 随后调用EnsureSizeWoker函数分配0x70的内存块
  3. 分配后spancmp=span*4=4,此时spansum2<<2==spansum,因此不再分配内存。
  4. 随后调用over_trigger,CalculateMinMax再次被调用,但是spansum和spancmp未变,span被改为1000,复制内容的时候会以span作为循环计数器。1000*0x1c>0x70,堆溢出。

 

标签: 漏洞
最后更新:2023年10月7日

hu1y40

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复
文章目录
  • 实验环境
  • 动态分析

分类目录

  • 0day安全
  • Bypass
  • C++Prime
  • CTF
  • DoS
  • DoS
  • FUZZ
  • iot
  • JSONP
  • MISC
  • MISC
  • PHP伪协议
  • Python
  • REVERSE
  • sqli-labs
  • SQL注入
  • Trick
  • UAF
  • WEB
  • WEB
  • XXE
  • 书籍阅读
  • 二进制
  • 代码阅读
  • 信息搜集
  • 信息泄露
  • 加密与解密
  • 双重释放漏洞
  • 反序列化
  • 命令执行
  • 命令执行
  • 堆溢出
  • 密码学
  • 弱加密
  • 提权漏洞
  • 整数溢出
  • 文件上传
  • 未分类
  • 栈溢出
  • 格式化字符串漏洞
  • 模型
  • 汇编语言
  • 渗透测试
  • 漏洞分析
  • 漏洞利用
  • 漏洞战争
  • 漏洞挖掘
  • 病毒分析
  • 越界读取
  • 路径遍历
  • 逻辑漏洞
  • 配置不当
  • 钓鱼
  • 靶场
最新 热点 随机
最新 热点 随机
加密算法 2023年度总结 RTSPServer StackOverflow Vulnerability FUZZ 总览篇 MP4Box 无限循环漏洞 CVE-2023-40477 Winrar RCE漏洞分析
加密与解密 第14章 加密与解密 第10章 C++ Prime Fuzzing101 1~3 C编译过程 CVE-2023-32784 KeePass主密码泄露漏洞分析

COPYRIGHT © 2023 hu1y40's blog. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

鄂ICP备2021009673号-1