2018-2019-1 20165322《信息安全系统设计基础》缓冲区溢出漏洞实验

Posted wangyaojia

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018-2019-1 20165322《信息安全系统设计基础》缓冲区溢出漏洞实验相关的知识,希望对你有一定的参考价值。

实验操作步骤

  • 首先在实验楼实验环境下配置32位系统
  • 我们关闭系统中的一个功能——使用地址空间随机化来随机堆(heap)和栈(stack)的初始地址(以便猜测内存地址,实行缓冲区溢出攻击。
    技术分享图片

  • 为了进一步防范缓冲区溢出攻击及其它利用 shell 程序的攻击,许多shell程序在被调用时自动放弃它们的特权,不能在shell中保持root权限,这个防护措施在/bin/bash中实现。设置zsh程序:
    技术分享图片

  • 输入命令“linux32”进入32位linux环境。输入“/bin/bash”使用bash:
    技术分享图片

  • 在 /tmp 目录下新建一个 stack.c 文件,输入以下代码,程序会读取一个名为“badfile”的文件,并将文件内容装入“buffer”:
    技术分享图片

  • 编译stack.c,并设置 SET-UID,
    • -fno-stack-proteck关闭用来阻止缓存区溢出的栈保护机制;-z execstack用于允许执行栈;
      -g 参数是为了使编译后得到的可执行文档能用gdb调试
      技术分享图片
  • 新建exploit.c,代码如下,x??x??x??x?? 处需要添上 shellcode 保存在内存中的地址,因为发生溢出后这个位置刚好可以覆盖返回地址。
    技术分享图片

  • 我们要得到 shellcode 在内存中的地址,输入命令gdb stackdisass main
    技术分享图片
    技术分享图片

  • 根据语句 strcpy(buffer + 100,shellcode); 我们计算 shellcode 的地址为 0xffffd350(十六进制) + 0x64(100的十六进制) = 0xffffd3b4(十六进制)
  • 修改exploit.c文件!将 x??x??x??x?? 修改为 xb4xd3xffxff
  • 编译exploit.c 程序,一开始报错了,将badfile打成了hadfile:
    技术分享图片

  • 通过先后运行攻击程序和漏洞程序,输入whoami,即可获得root权限,攻击成功。
    技术分享图片

实验感想与总结

  • 要想实现攻击首先要保证关闭空间地址随机化,猜测内存地址是攻击成功的关键
  • 我们要使用一个shell程序来代替/bin/bash,使得系统的防护措施被取消
  • GCC编译器有一种栈保护机制来阻止缓冲区溢出,我们要关闭这种机制
  • 计算出shellcode的起始地址
  • 运行漏洞代码和攻击代码,就可以获得权限了。
  • 攻击的关键就是减弱系统防护,制造、寻找代码漏洞,从而破解内存地址、攻击系统,获取权限。











以上是关于2018-2019-1 20165322《信息安全系统设计基础》缓冲区溢出漏洞实验的主要内容,如果未能解决你的问题,请参考以下文章

20165322 实验五 网络编程与安全

2018-2019-2 网络对抗技术 20165322 Exp6 信息搜集与漏洞扫描

2018-2019-1 《信息安全系统设计基础》 20165235 实验五 通信协议设计

2018-2019-1 20165236 《信息安全系统设计基础》第4周学习总结

2018-2019-1 20175234 《信息安全系统设计基础》有关系统调用的部分学习

2018-2019-1 20165316 《信息安全系统设计基础》第1周学习总结