缓冲区溢出漏洞实验 20181218

实验楼和蓝桥合并后必须绑定手机号,我之前用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块钱

原文地址:https://www.cnblogs.com/hardcoreYutian/p/13771999.html