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 秒後に再起動する必要があります。しかし、ここでの私の処刑ではそうではありませんでした。どうしてこれなの?
どうもありがとうございました!