Loading

Heap Spary实验笔记

heap spray实验

环境准备

首先搭建了书上推荐的windows 2000的环境,遇到的状况是我的VM11安装好windows2000系统后,不能安装VMtools工具,可能是windows2000的确太老了,连VM都不想支持他了。
不过还是找到了共享文件的方法,就是用U盘在真机和虚拟机之间进行传递数据。我想多熟悉一下windbg,在windows2000的系统上用Windbg调试IE,找不到相应的符号,所以不能用函数名称下断点,虽然也可以借助IDA,直接在函数相应的地址进行下断,所以换到了xp下进行调试。

缓冲区溢出

在0day书上说的函数下个断点,然后让程序跑起来

0:006> bl
 0 e 5ad02d1b     0001 (0001)  0:**** vgx!_IE5_SHADETYPE_TEXT::Text
0:006> g

接着,在打开POC的页面上F5刷新,断在了vgx!_IE5_SHADETYPE_TEXT::Text函数的入口

按照书上的做法,我们步过 _IE5_SHADETYPE_TEXT::TOKENS::Ptok(void) 函数(假定已经发现了这个函数存在缓冲区溢出,这里只做为一种验证),然后查看堆栈

果然看到了unicode的QQQQ字符。

查看保存返回地址的栈地址为0012c0d4 = 0012c0d0+4

让程序跑起来,然后修改html中QQQQ的数量为12,再次重复刚才的步骤(在IE中刷新,断在vgx!_IE5_SHADETYPE_TEXT::Text函数的入口,步过_IE5_SHADETYPE_TEXT::TOKENS::Ptok(void) 函数,查看堆栈)

因为保存字符串的指针是0012becc,如果继续加大字符的数量,势必会重写0012c0d4中保存的返回地址,这是一个典型的缓冲区溢出。那么怎么利用heap spary去溢出呢,明天接着做

posted @ 2015-12-29 01:56  Lnju  阅读(158)  评论(0)    收藏  举报