Security 为什么外壳代码不起作用?

Security 为什么外壳代码不起作用?,security,redhat,buffer-overflow,shellcode,Security,Redhat,Buffer Overflow,Shellcode,我正在尝试做一个缓冲区流攻击演示。我想使用shell代码使堆栈溢出并获得一个sh会话。我可以按照这里的教程,甚至产生完全相同的外壳代码。但是我不能像教程中那样使用shellcode3.c运行外壳代码。我得到的总是“分割错误” 我使用的是“Red Hat Enterprise Linux AS发行版4(Nahant更新4)” 我想知道有没有人用过类似的方法?是否需要切换到其他系统?分段故障意味着堆栈溢出并触发崩溃;您需要找到EIP的正确偏移量,并将外壳代码放在那里。如果您确信自己将外壳代码放在了正

我正在尝试做一个缓冲区流攻击演示。我想使用shell代码使堆栈溢出并获得一个sh会话。我可以按照这里的教程,甚至产生完全相同的外壳代码。但是我不能像教程中那样使用
shellcode3.c
运行外壳代码。我得到的总是“分割错误”

我使用的是“Red Hat Enterprise Linux AS发行版4(Nahant更新4)”


我想知道有没有人用过类似的方法?是否需要切换到其他系统?

分段故障意味着堆栈溢出并触发崩溃;您需要找到EIP的正确偏移量,并将外壳代码放在那里。如果您确信自己将外壳代码放在了正确的位置,那么可以始终使用Metasploit根据需要生成外壳代码。您还必须确保关闭现代Linux版本中默认打开的各种堆栈溢出保护。谷歌会告诉你任何你需要知道的事情。你退房了吗?这是用于Windows漏洞利用开发的,但这是一个很好的起点。

似乎您确实覆盖了堆栈,因为出现了分段错误。使用像gdb这样的调试器来找出EIP寄存器的确切内容和外壳代码的地址。他们应该匹配。试着找出跳转的位置和应该跳转的位置。这会给你一个更好的主意。

你使用的Linux是一个重要因素;对于不同的操作系统,堆栈的整体结构将不同。 好的shell代码不能包含空字节,这将停止缓冲区中代码的执行

“\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x41\xdb\x89\xd8\x40\xcd\x80\xe8\xdc\xff\xff\xff/bin/sh”

上面是一个很好的外壳代码,只有46字节。 本网站将帮助您了解红帽堆栈的结构和其他信息
此外,你还必须使用“gcc-fno stack protector-o out test.c”禁用所有类型的堆栈保护,如execstack、stack canaris。

这篇论文是什么时候写成的?好吧,欢迎来到2011年,这一切都不管用了。缓冲区溢出漏洞仍然管用,你只需要在今天的系统上绕过aslr和dep。exploit-db.com为当今的系统提供了大量此类漏洞利用