缓冲区溢出漏洞实验 20199321

Posted 20199321zjy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了缓冲区溢出漏洞实验 20199321相关的知识,希望对你有一定的参考价值。

缓冲区溢出漏洞实验

缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况。这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段。这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写。

实验准备

  • 输入命令安装一些用于编译 32 位 C 程序的软件包
sudo apt-get update
sudo apt-get install -y lib32z1 libc6-dev-i386
sudo apt-get install -y lib32readline-gplv2-dev
  • 关闭使用地址空间随机化来随机堆(heap)和栈(stack)的初始地址功能
sudo sysctl -w kernel.randomize_va_space=0
  • 设置 zsh 程序
sudo su
cd /bin
rm sh
ln -s zsh sh
exit
  • 输入命令“linux32”进入32位linux环境,输入“/bin/bash”使用bash
    技术图片

漏洞程序

  • 在 /tmp 目录下新建一个 stack.c 文件,程序会读取一个名为“badfile”的文件,并将文件内容装入“buffer”。
    技术图片
  • 编译该程序,并设置 SET-UID。
sudo su
gcc -m32 -g -z execstack -fno-stack-protector -o stack stack.c
chmod u+s stack
exit

技术图片

攻击程序

  • 在 /tmp 目录下新建一个 exploit.c 文件
    技术图片
  • 我们要得到 shellcode 在内存中的地址,输入命令
    技术图片
  • 设置断点
    技术图片
  • 根据 strcpy(buffer + 100,shellcode); 修改 exploit.c 程序,然后编译
    技术图片
  • 先运行攻击程序 exploit,再运行漏洞程序 stack,观察结果
    技术图片
  • 攻击失败,提示”段错误“,那么请重新使用 gdb 反汇编,计算内存地址
    技术图片

以上是关于缓冲区溢出漏洞实验 20199321的主要内容,如果未能解决你的问题,请参考以下文章

20165315 缓冲区溢出漏洞实验

20165318 缓冲区溢出漏洞实验

20165302 缓冲区溢出漏洞实验

20165333 缓冲区溢出漏洞实验

2017-2018-2 20179204《网络攻防实践》缓冲区溢出漏洞实验

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