【发布时间】:2012-06-02 20:47:50
【问题描述】:
我刚刚阅读 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 秒后重新启动。但在我在这里的执行中它没有。这是为什么呢?
非常感谢!
【问题讨论】:
-
你检查过服务器实际上没有在后台运行吗?
-
虽然我找不到你的答案。我只是喜欢你发布的那个链接。谢谢你。 :)
-
我用ps查了一下,没有……
-
@JoachimPileborg 抱歉...但是您知道分段错误是怎么回事吗?
-
什么操作系统?想到的是address space randomization,它旨在使溢出的程序崩溃,而不是允许任意代码执行。 Linux 自 2.6.12 以来就默认启用它,并且在此之前很久就有许多 BSD 版本。