0

我试图通过利用缓冲区溢出来执行shell。

这是我尝试运行的代码。

task2_exploit.c

在此处输入图像描述

task2_stack.c

在此处输入图像描述

我试图在buf数组中获取 shellcode 部分的地址:

在此处输入图像描述

在这里,shellcode 似乎从0xffd563指示的蓝色框开始,所以我实现了它,task2_exploit.c它显示在红色框中,这是RET一部分。

在此处输入图像描述

当我像这样运行程序时,实现shellcode的确切地址,它成功调用了shell。buf但是,当我在数组中实现 NOP Slide 部分的地址之一时(例如ffffd480),它会发生段错误而不是滑动到 shell 代码部分并调用新的 shell。我尝试了很多次,但从未成功。我不明白为什么会这样。请帮忙。

这是编译和运行程序的命令。

将 shell 更改为zsh并停用 ASLR:

sudo rm /bin/sh
sudo ln -s /bin/zsh /bin/sh
sudo sysctl -w kernel.randomize_va_space=0

编译task2_stack.c并更改所有权,授予 set-uid 权限:

gcc -m32 -z execstack -fno-stack-protector task2_stack.c -o task2_stack
sudo chown root task2_stack
sudo chmod 4755 task2_stack

编译task2_exploit.c

gcc -m32 task2_exploit.c -o task2_exploit

执行程序:

./task2_exploit
./task2_stack
4

0 回答 0