3

我刚刚阅读了 Smashing the Stack for Fun and Profit ( http://insecure.org/stf/smashstack.html ) 并想探索更多。然后我在这里找到了这段代码:https ://github.com/yangsu/Stack-Smashing

我很清楚这里所说的原则,我严格按照步骤操作,但出现了一些错误。我开了2个终端。

在第一个终端中:(在另一个终端中键入“cat”行后出现“Segmentation fault”行)

$ sudo sysctl -w kernel.randomize_va_space=0
$ gcc -z execstack -fno-stack-protector webserver.c -o server
$ ./server 5000
Segmentation fault.  Shutting down peacefully, then rebooting.
$

在第二个航站楼,

$ g++ generate.cpp -o generate
$ ./generate
$ cat data.dat | nc 127.0.0.1 5000
$ 

错误是由“cat”行的错误格式或参数引起的吗?还是有其他原因?

此外,正如函数sigsegv中所写,服务器应在 2 秒后重新启动。但在我在这里的执行中它没有。为什么是这样?

非常感谢你!

4

1 回答 1

2

学习粉碎堆栈从关注最小的细节开始。
一个成功的漏洞利用和一个简单的进程崩溃几乎完全相同。您必须找到细微差别并更改漏洞利用。

首先调试崩溃的程序。
为什么它会崩溃?堆栈上写了什么?
它是因为修改了返回地址(在这种情况下你已经完成了一半)还是因为其他原因而崩溃?

如果你不能回答这些问题,那么即使你让事情顺利进行,你也将一无所获。

于 2012-05-28T14:12:06.253 回答