0

我正在尝试在 virtualbox 中测试缓冲区溢出攻击,并且由于各种发行版的所有安全功能,过去几周一直在苦苦挣扎。

我已经尝试一步一步地在线学习教程,但没有成功。

我没有尝试禁用所有安全功能,而是尝试使用旧的 linux 发行版,但其中大多数没有 gcc 并且现在缺少工作存储库。

我什至在 Ubuntu 10.10(我也下载了)上找到了一个逐步进行的 youtube 视频,包括禁用各种安全功能的所有命令,但运气不好。我可以得到分段错误,但不是“非法指令”。

是否有一个古老的 linux 发行版我仍然可以在没有这种保护的情况下下载,它附带 gcc(或具有完整存储库的大型 dvd iso 之一),所以我可以测试一下?

4

1 回答 1

0

你不需要。

使用 GCC 标志编译可执行文件-fno-stack-protector并关闭 ASLR会禁用许多Linux 发行版sudo sh -c "echo 0 > /proc/sys/kernel/randomize_va_space"中的两个主内存损坏攻击缓解措施。(这两种保护技术都可以追溯到足够长的时间,以至于查找旧发行版的副本非常耗时,除了该死的易受攻击的 Linux之外)

在某些发行版上,您可能会编写 xor 执行内存页面,这是通过许多不同的包实现的,您必须自己禁用这些包。考虑到这一点,如果您没有收到堆栈粉碎警告,则几乎可以肯定您没有带有 W^X 内存页的可执行文件。

这意味着如果您遇到分段错误,您可能已经成功覆盖了堆栈上存储的 EIP,只是您的 shellcode 偏移错误,或者您犯了字节序错误(一些非法的向后多字节指令不再是非法的!) . 检查您在 GDB 中的程序,我想您会发现哪里出错了。

探索The Shellcoder's Handbook可能对您的时间有益。

于 2012-09-04T02:57:50.560 回答