第四章 Win32堆栈溢出入门(Learnning Win32 Stack Overflow ).pdf

第四章 Win32堆栈溢出入门(Learnning Win32 Stack Overflow ).pdf

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
win32堆栈溢出入门 wwiinn3322堆堆栈栈溢溢出出入入门门 版本号 1.0 文档作者 netxfly 更新日期 2007年5月10日 关键字:overflow、debug、Shellcode、Win32 Exploit 关关键键字字::oovveerrffllooww、、ddeebbuugg、、SShheellllccooddee、、WWiinn3322 EExxppllooiitt 综述: 本文通过几个实例介绍了如何利用已知的poc进行漏洞调试的基本方法。 Windbg下载:/whdc/devtools/debugging/installx86.Mspx Metasploit下载: POC 下载:/ XnView 1.90.3下载地址:/soft/1187.html ACDSee v9.0 官方简体中文版 :/soft/9483.Html Ccproxy6.0包含于附件中 正文  缓冲区溢出原理 如上代码所示,为局部变量分配10bytes,然后copy 10个字节进去,程序 会正常输出。当我们把要拷贝到缓冲区的字符加大到20,就会发生缓冲区溢出, 如图2所示。 事实上,win32的堆栈是默认4 字节对齐的,操作系统为buffer分配的缓冲 区大小为12字节,随后的4字节为保存在堆栈中EBP 的值,接下来的的4字 节便是主函数的返回地址RET了。我们将第16至20个字节改为BBBB 后再编 译运行一次程序。如图3所示,提示出错的地址这正好是BBBB 的ASCII 值。  Exploit It! 由于这个程序的缓冲区太小,没法放我们ShellCode,我们把buffer数组的 容量改为2000就足以存放我们的ShellCode了。 根据前面的知识,我们推算出溢出点在2005的位置,我们用JMP ESP 来 覆盖溢出点,最后EIP 就会跳转到RET 后面中的SHELLCODE 中。利用方式 如下: NNNNNNN + EBP + RET + ShellCode + NNNNN N 表示Nop,但是在这个程序中,我们的ShellCode太长了,放在RET后 面就会覆盖到程序中的一些其他地址,导致函数无数返回,结果却触发不了溢出 点。所以我们只能把ShellCode放在溢出点前面,然后让EIP 往前跳,跳到我 们的ShellCode中,利用示意图为: NNNNN + ShellCode + NN + EBP + RET + JMP -x +NNN JMP -x表示往前跳X个字节,RET 处我们用中文Win2000/xp/2003 通用 JMP ESP 地址7ffa4512。 在本例中,我们的ShellCode是由自动生成的, win32_adduser - PASS=security EXITFUNC=thread USER=security Size=244 Encoder=PexFnstenvSub,添加一个用户名和口令都为security的管 理员。 缓冲区大小为2008,我们让EIP 往前跳1000 bytes,后面还有1000 bytes 可以容纳我们的ShellCode,其实也不用这么精确的,只要让能容纳下 ShellCode,然后让EIP 跳转到ShellCode前面的一大堆空指令中,EIP 就会顺 着这些空指令一直执行到我们的ShellCode中,最后我们构造的exp 如下图所 示: Exp 执行后成功添加security 管理员,如理图所示:  ACDSEE9 溢出学习 在拜读了Cloie大牛的二篇大作后,对Win32堆栈溢出有了更深入的认识, 同时也学到了一种很方便的溢出点定位方法,窃喜中, 首先根据作者提供的poc,自已照着写个代码风格清晰的,用6600个A填 充缓冲区,然后生成一个XPM文件摆放在桌面上。如图所示: 用ACDSEE9浏览桌面上的XPM 文件,ACDSEE 进程崩溃了,再次运行 ACDSEE9.exe,然后用CDB 加载其进程,如下图所示: ACDSEE9 会自动中断在程序的入口点处,输入g 继续运行程序,然后用 ACDS

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档