【发布时间】:2012-06-01 18:47:45
【问题描述】:
我一直在 FreeBSD 系统上试验缓冲区溢出。 作为第一个实验,我试图让被利用的程序启动另一个进程(在这种情况下是 /bin/hostname)。一切正常,程序打印了主机名,然后终止。 之后,我尝试让程序生成一个 shell(即执行 /bin/sh)。我假设这可以通过简单地交换代表要调用的程序的字符串来完成。当我尝试这个时,被利用的程序简单地退出,根据 gdb 它确实成功地产生了一个新进程(/bin/sh)。但是,没有生成任何外壳。 然后我尝试了我的第一个漏洞,并将 /bin/sh 文件移动到 /bin/hostname,仍然没有改变任何东西。 我现在的问题是,从任何其他命令执行 /bin/sh 似乎有什么不同?
作为参考,对于 shell 生成尝试,我使用了以下 shellcode:
char code[] = "\x31\xc0\x50\x68\x2f\x2f\x73\x68"
"\x68\x2f\x62\x69\x6e\x89\xe3\x50"
"\x54\x53\xb0\x3b\x50\xcd\x80";
【问题讨论】:
-
似乎需要更多信息,因此请发布您的代码,包括您的 shellcode-source,以便人们查看。
标签: security assembly buffer-overflow shellcode