Ho sperimentato buffer overflow su un sistema FreeBSD. Come primo esperimento, ho provato a far sì che il programma sfruttato avvii un altro processo (/ bin/hostname in questo caso). Tutto ha funzionato, il programma ha stampato il nome host e poi è terminato. Successivamente ho provato a far generare al programma una shell (ad esempio eseguendo/bin/sh). Supponevo che ciò potesse essere fatto semplicemente scambiando la stringa che rappresenta il programma da chiamare. Quando provo a farlo, il programma sfruttato si chiude semplicemente, secondo gdb, genera un nuovo processo (/ bin/sh). Tuttavia, non viene generata alcuna shell. Ho quindi provato il mio primo exploit e ho spostato il file/bin/sh in/bin/hostname, ancora non cambia nulla. La mia domanda ora è, cosa sembra essere diverso nell'eseguire/bin/sh da qualsiasi altro comando?Buffer Overflow - Il programma termina dopo la generazione di una shell
Per riferimento, per il tentativo di guscio di deposizione delle uova ho usato il seguente shellcode:
char code[] = "\x31\xc0\x50\x68\x2f\x2f\x73\x68"
"\x68\x2f\x62\x69\x6e\x89\xe3\x50"
"\x54\x53\xb0\x3b\x50\xcd\x80";
Questo potrebbe essere correlato: http://forums.freebsd.org/showthread.php?t=10054 – zxcdw
Ulteriori informazioni sembrano essere necessarie, quindi inserisci il tuo codice includendo il tuo codice sorgente shell, in modo che le persone possano esaminarlo. – rumpel