实验楼和蓝桥合并后必须绑定手机号,我之前用QQ号注册的实验楼登不了,自己的手机号懵懵地注册了新号......借了同学的号转绑才能用......
实验地址:缓冲区溢出漏洞实验
实验准备
安装用于编译32位C程序的软件包
sudo apt-get update
sudo apt-get install -y lib32z1 libc6-dev-i386 lib32readline6-dev
sudo apt-get install -y python3.6-gdbm gdb
实验过程
初始设置
1.关闭地址随机化
sudo sysctl -w kernel.randomize_va_space=0
2.使用zsh代替/bin/bash
sudo su
cd /bin
rm sh
ln -s zsh sh
exit
3.进入32位linux环境,使用bash
linux32
/bin/bash
漏洞程序
1.编写stack.c
cd /tmp
vim stack.c
(代码文本不贴了,已经-2¥了)
2.编译程序并设置SET-UID
sudo su
gcc -m32 -g -z execstack -fno-stack-protector -o stack stack.c
chmod u+s stack
exit
编译失败,因为忘了加头文件
修改代码
编译成功
攻击程序
1.编写stack.c(在 mp)
2.使用gdb得到shellcode在内存中的地址
gdb stack
disass main
找到$esp,设置断点
b *0x080484e1
r
i r $esp
将得到的地址加上16进制的64
3.修改exploit.c并编译
攻击结果
./exploit
./stack
段错误了,没有获得root权限
修复错误
1.回到gdb查看地址的那一步
内存地址算正确了,这次就成功啦!
练习
开启地址随机化
攻击失败
将/bin/sh指向/bin/bash(关闭地址随机化,控制变量)
攻击失败
实验楼吞了我2块钱