n字节缓冲区用户输入正常流程-淮海工学院凌风数字化网络教学平台.PPT

n字节缓冲区用户输入正常流程-淮海工学院凌风数字化网络教学平台.PPT

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

网络攻防技术 徐馨 E-MAIL:Leo_smile@ 淮海工学院计算机工程学院 内容 缓冲区溢出概述 缓冲区溢出类型 溢出利用基本原理 Shellcode的编写 溢出攻击及相关保护技术的发展 缓冲区溢出攻击 危害性 据统计,缓冲区溢出攻击占所有网络攻击总数的80%以上 溢出成功后大都能直接拿到目标系统的最高权限 身边的例子 RPC DCOM溢出 IIS .ida/idq溢出 IIS .printer溢出 IIS WebDav溢出 Wu-ftpd溢出 缓冲区溢出示意图 程序溢出时的表现 以特权身份运行的程序 网络服务程序 HTTP Server FTP Server Mail Server RPC Daemon … suid/sgid程序 Root溢出 Remote root exploit 通过网络,无需认证即可获得远程主机的root权限 Local root exploit 本地普通用户,利用系统程序的漏洞获得root权限 缓冲区溢出原理 通过往程序的缓冲区写入超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它指令,以达到攻击的目的 缓冲区溢出攻击的对象在于那些具有某些特权(如root或本地管理器)运行的程序,这样可以使得攻击者取得该程序的控制权,如果该程序具有足够的权限,那么整个主机就被控制了 * 网络入侵与防范技术 * Idahack使用方法 * 网络入侵与防范技术 * 用idahack进行攻击—失败后的结果 * 网络入侵与防范技术 * 用idahack进行攻击—成功后的结果 * 网络入侵与防范技术 * 用nc获得一个shell * 网络入侵与防范技术 * 获得shell后可以查看对方的信息 * 网络入侵与防范技术 * 在shell中运行命令:添加用户 植入代码和流程控制的综合图示 * 网络入侵与防范技术 * 4.4 代码植入技术 4.4.1 shellcode 4.4.2 返回地址 4.4.3 填充数据 4.4.4 植入代码的构造类型 4.4.5 shellcode使用示例 4.4 代码植入技术 所植入的代码一般由shellcode、返回地址、填充数据这三种元素按照一定的结构和构造类型组成 什么是shellcode 是植入代码的核心组成部分,是一段能完成特殊任务的自包含的二进制代码。 由于它最初是用来生成一个高权限的shell,因此而得名。虽然现在人们已经远远不满足于生成一个shell,但shellcode的“美名”一直延用至今。 攻击者通过巧妙的编写和设置,利用系统的漏洞将shellcode送入系统中使其得以执行,从而获取特殊权限的执行环境,或给自己设立有特权的帐户,取得目标机器的控制权。 4.4.1 shellcode 除了经典的利用exec()系统调用执行/bin/sh获取shell之外,下表列出了Unix/Linux系统中的shellcode经常用到的一些其它系统调用。 4.4.1 shellcode 在linux中,为了获得一个交互式shell,一般需要执行代码execve(“/bin/sh”, “/bin/sh”, NULL); 对此代码进行编译后得到机器码。 char shellcode[] = “\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd\x80\xe8\xdc\xff\xff\xff/bin/sh”; 注意:不同的操作系统、不同的机器硬件产生系统调用的方法和参数传递的方法也不尽相同。 4.4.2 返回地址 返回地址是指shellcode的入口地址。攻击者如果希望目标程序改变其原来的执行流程,转而执行shellcode,则必须设法用shellcode的入口地址覆盖某个跳转指令。 由于所植入的代码是被复制到目标机器的缓冲区中,攻击者无法知道其进入到缓冲区后的确切地址。不过,内存的分配是有规律的,如Linux系统,当用户程序运行时,栈是从0xbfffffff开始向内存低端生长的。如果攻击者想通过改写函数返回地址的方式使程序指令发生跳转,则程序指令跳转后的指向也应该在0xbfffffff附近。 事实上,虽然不同的缓冲区溢出漏洞,其植入代码的返回地址都不同,但均处于某个较小的地址区间内。另外,为了提高覆盖函数返回地址的成功率,往往在植入代码中安排一段由重复的返回地址组成的内容。 4.4.3 填充数据 由于攻击者不能准确地判断shellcode的入口地址,因此为了提高shellcode的命中率,往往在shellcode的前面安排一定数量的填充数据。

文档评论(0)

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

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

1亿VIP精品文档

相关文档