总结windows下堆溢出的三种利用方式

总结windows下堆溢出的三种利用方式

ID:35303903

大小:46.00 KB

页数:8页

时间:2019-03-23

总结windows下堆溢出的三种利用方式_第1页
总结windows下堆溢出的三种利用方式_第2页
总结windows下堆溢出的三种利用方式_第3页
总结windows下堆溢出的三种利用方式_第4页
总结windows下堆溢出的三种利用方式_第5页
资源描述:

《总结windows下堆溢出的三种利用方式》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、总结windows下堆溢出的三种利用方式.txt你站在那不要动!等我飞奔过去!  雨停了天晴了女人你慢慢扫屋我为你去扫天下了  你是我的听说现在结婚很便宜,民政局9块钱搞定,我请你吧你个笨蛋啊遇到这种事要站在我后面!  跟我走总有一天你的名字会出现在我家的户口本上。  原文由Leven发在网络编程版:https://www.xfocus.net/bbs/index.php?act=SE&f=3&t=34455&p=122380总结windows下堆溢出的三种利用方式1.利用RtlAllocHeap这是ISNO提到的,看这个例子main(intargc,char*argv[]){char*

2、buf1,*buf2;chars[]="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaax03x00x05x00x00x01x08x00x11x11x11x11x21x21x21x21";buf1=(char*)malloc(32);/*分配两块内存*/memcpy(buf1,s,32+16);/*这里多复制16个字节*/buf2=(char*)malloc(16);free(buf1);free(buf2);return0;}在给buf1完成malloc之后,返回的地址(buf1)是个指针,指向的内存分配情况是这样buf1的管理结构(8b

3、ytes)

4、buf1真正可操作空间(32bytes)

5、下一个空闲堆的管理结构(8bytes)

6、两个双链表指针(8bytes)在给buf2完成malloc之后,buf1指向的内存分配情况是这样buf1的管理结构(8bytes)

7、buf1真正可操作空间(32bytes)

8、buf2的管理结构(8bytes)

9、buf2真正可操作空间(16bytes)

10、两个双链表指针(8bytes)现在如果在buf2分配空间之前,buf1的memcpy操作溢出,并且覆盖了下一个空闲堆的管理结构(8bytes)

11、两个双链表指针(8bytes)共16个字节的时候,就会造成buf2的RtlAllocHeap操作异常。原

12、因看RtlAllocHeap的这段代码001B:77FCC4538901MOV[ECX],EAX001B:77FCC455894804MOV[EAX+04],ECX此时ECX指向两个双链表指针(8bytes)的后一个指针(0x21212121),EAX指向前一个指针(0x11111111)。类似于formatstring溢出,可以写任意数据到任意地址,这种情况比较简单,前提是在buf2分配空间之前buf1有溢出的机会2.利用RtlFreeHeap的方式一这是ilsy提到的,看例子main(intargc,char*argv[]){char*buf1,*buf2;chars[]="aaaa

13、aaaaaaaaaaaaaaaaaaaaaaaaaaaax03x00x05x00x00x09";buf1=(char*)malloc(32);/*分配两块内存*/buf2=(char*)malloc(16);memcpy(buf1,s,32+6);/*这里多复制6个字节*/free(buf1);free(buf2);return0;}由于buf1多复制了6个字节,这6个字节会覆盖掉buf2的管理结构,在free(buf2)时会发生异常。只要我们精心构造这个6个字节就可以达到目的先看看8字节管理结构的定义(从windows源码中找到)typedefstruct_HEAP_ENT

14、RY{////Thisfieldgivesthesizeofthecurrentblockinallocation//granularityunits.(i.e.Size<

15、ieldgivesthesizeofthepreviousblockinallocation//granularityunits.(i.e.PreviousSize<

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。