4.4 Windows下堆溢出.pptx

吴少华 电子信息学院;1.堆溢出初探;1. 堆溢出初探;在Windows下,用户要求分配堆时,可以通过一系列函数来完成。可以使用Win32的堆调用API函数,或者C/C++运行期库的函数等。;2 RtlAllcoateHeap的失误;2.1 有堆溢出问题的程序;在mybuf数组很小的时候,程序没有任何问题,我们稍微改变下程序,只是加长mybuf的长度,变为240个A,重新生成RELEASE版的程序,在命令行下运行它。;定位溢出点 for(i=0; i240; i++) { mybuf[i] = 100 + i % 10; };计算溢出点 (0x79-0x64)×10+(0x66-0x64)=21×10+2=212 验证一下,指定mybuf第212开始的四个字节是‘BBBB’,其余全部为‘A’。如果我们的计算正确,那么应该是0x42(B的十六进制)覆盖到溢出点。 for(i=0; i240; i++) { mybuf[i] = A; } mybuf[212] = B; mybuf[213] = B; mybuf[214] = B; mybuf[215] = B; ;堆溢出的shellcode有如下特殊要求: (1)如果溢出的是默认堆,则不能使用网络相关的函数,比如开端口、反连等ShellCode都不能使用; (2)可以想办法在ShellCode中恢复默认堆,然后再使用网络相关Sh

文档评论(0)

1亿VIP精品文档

相关文档