执行shellcode时出现分段错误

时间:2015-10-29 12:10:59

标签: buffer-overflow shellcode

我试图执行带有注入堆栈的shell代码的程序(程序来自securityTube.net教程,Megaprimer缓冲区溢出)非常好的网站(http://www.securitytube.net/

我们的shellcode.c是:

#include <stdio.h>
char shellcode[]="\xb0\x01\x31\xdb\xcd\x80";
main()
{
  int *p;
  p=(int *)&p+2;
  (*p)=(int)shellcode;
}

我使用fno-stack-protector-z execstack编译来禁用堆栈保护,即使使用这些参数我也会出现分段错误, 我们的shellcode只是用于exit()函数的系统调用,使用gdb我注意到在shellcode中命令int $x80时引发了分段错误。 也许还有另一个安全参数阻止了我们的shellcode

任何建议请

1 个答案:

答案 0 :(得分:0)

也许你可以尝试这个例子:http://shell-storm.org/shellcode/files/shellcode-827.php

因为你的shellcode有一些问题。

它没有将$ edx清除为null。

您可以使用gdb进行检查。

在$ 80之前设置breadpoint。

或使用strace跟踪系统调用参数。

以下是我使用strace运行代码的结果。

execve("/bin//sh", ["/bin//sh"], [/* 3 vars */]) = -1 EFAULT (Bad address)