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去溢出呢,明天接着做

浙公网安备 33010602011771号