网络实验安全实验一_讲义.pdfVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
网络实验安全实验一_讲义

实验一:常见的攻击技术 实验前说明:充分的利用网络资源,很多问题都可以通过有哪些信誉好的足球投注网站引擎(如 google,baidu 等)来找到你想要的答案。实验中涉及到的软件可以在百度云盘 /s/1mhQSLKG 进行下载(提取密码:tjm8)。 1 缓冲区溢出攻击 1.1 实验目的 学习缓冲区溢出的形成原因,能够分析缓冲区溢出的溢出点,掌握缓冲区溢 出的攻击原理。 1.2 实验内容与步骤 1.2.1 环境安装 本实验采用 Ubuntu 12.04(X86) 虚拟机,可以从百度云盘下载该虚拟机 Ubuntu32.7z。在本地解压后,用Vmware Workstation 运行该虚拟机,其开机密 码是2110505134。 1.2.2 缓冲区溢出初窥 在home/bufferOverflow 目录下有一个test.c 文件,其源码如下所示: 从上可以知道,该程序用于从终端读入一串字符串,然后输出“Hello, World\n”,运行结果如下所示: 由于在vulnerable_function()函数中,缓冲区的长度只有128bytes ,但是可以 从输入读入256 个字符,超过了缓冲区的长度,所以当输入长度过长,就会发生 缓冲区溢出,如下所示: 这里我们输入了一串a,可以看到test 程序直接崩溃了。但是,如果输入是 精心构造的,就可以反射到shell 。 1.2.3 寻找溢出点 为了更好地学习缓冲区溢出,这里会去掉一些保护机制。 1. 编译时除去保护,gcc 的编译命令为gcc -fno-stack-protector -o test test.c,如 下所示: -fno-stack-protector 参数会关掉栈保护。 2. 关闭ASLR 保护 在终端执行如下命令: $ sudo -s $ echo 0 /proc/sys/kernel/randomize_va_space $ exit 执行效果如下所示: 接下来利用 home/bufferOverflow 目录下的 pattern.py 脚本计算溢出点的位 置。 首先使用命令python pattern.py create 150 来生成一串测试用的 150 个字节 的字符串,如下所示: 从 上 可 以 看 到 产 生 的 测 试 字 符 串 为 : Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9A c0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae 0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9 。 随后,我们使用gdb 来调试test 程序: 1. 在终端运行命令gdb test,如下所示: 2. 在gdb 中执行run 命令,以运行test 程序,如下所示: 3. 输入测试字符串,如下所示: 4. 从上可以看到,内存出错的地址为0。 5. 执行quit 命令,退出gdb,如下所示: 最后,根据内存出错的地址0再次利用pattern.py 脚本,执行命 令python pattern.py offset 0,如下所示: 从上可以看到,缓冲区的溢出点为140 字节,我们只要构造一个输入”A”*140 + retAddr ,就可以让PC 赋值为retAddr ,从而执行retAddr 处的代码了。 1.2.4 攻击payload 构造 如何构造攻击的 payload 呢? 大家也许很容易就想到 shellcode ,将一段 shellcode 藏在输入的字符串中。但是,这是很早的攻击手段了,现在的操作系统 都有DEP 保护,即栈不可执行,也就是说,栈上的代码是不能够执行的,而buf 是一个局部变量,恰好位于栈上。 为了更好地认识到这一点,下面看一下test 程序的栈的权限信息: 1. 执行test ,如下所示: 2. 查看test 程序的pid ,如下所示: 3. 从上可以知道,test 程序的pid 为2977 。 4. 执行命令cat /proc/2977/maps,查看test 程序的内存布局信息,如下所示: 5. 从上可以看到,最后一项是[

文档评论(0)

celkhn5460 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档