缓冲区溢出漏洞实验 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的主要内容,如果未能解决你的问题,请参考以下文章