xinetd経由でポート8000上のサービスとして以下のプログラムを実行する単純なバッファオーバーフローチュートリアルを作成しようとしています。コードはxinetdによる単純なバッファオーバーフロー
gcc -o bof bof.c -fno-stack-protector
を使用してコンパイルされました。ubuntuにはスタック保護もオフになっています。
python -c ---snippet--- | ./bof
すなわちローカルで悪用
は成功し、隠された機能は、テキストファイルの内容を表示し、実行されました。しかし
、サービスとして実行し、悪用するとき何も返さない
python -c ---snippet--- | nc localhost 8000
を実行します。私はここに何かを逃していますか
#include <stdio.h>
void secret()
{
int c;
FILE *file;
file = fopen("congratulations.txt", "r");
if (file) {
while ((c= getc(file)) !=EOF)
putchar(c);
fclose(file);
}
void textdisplay()
{
char buffer[56];
scanf("%s", buffer);
printf("You entered: %s\n", buffer);
}
int main()
{
textdisplay();
return 0;
}
あなたはstackoverflow.comに助けを求める前に、自分自身を行うことができますいくつかの分析を逃しています。たとえば、straceを使用して、xinetdが実際にforkしてサーバープロセスを実行していることを確認し、サーバープロセスがエクスプロイトを正常に読み取るようにします。 –