2009-02-09 8 views
5

Als Teil einer Kurszuweisung muss ich einen Exploit-Code schreiben, um einen Pufferüberlauf zu verursachen und Code auszuführen, der auf dem Stack vorhanden ist. sysctl -w kernel.randomize_va_space = 0 Aber ich bin nicht in der Lage, einen Weg zu finden, um den Stapel Ausführungsschutz zu deaktivieren:stack execution protection und randomization auf ubuntu

Ich habe den Stapel randomiztion durch den folgenden Befehl ausgeschaltet. Ich bin nicht sicher, ob es einen Stack-Exec-Schutz in Ubuntu gibt oder nicht ... also meine erste Frage ist, ob es etwas wie Red Hats Exec-Shield in Ubuntu 8.10 gibt und wenn ja, wie können wir das ausschalten?

Ich habe versucht, einen Pufferüberlauf zu verursachen und Anweisungen vom Stapel auszuführen, aber jedes Mal, wenn ich das versuche, bekomme ich einen Seg-Fehler.

Ich habe ubuntu 8.10 64 Bit, aber das Programm im Debugging ist auf einem i386-Rechner mit Stack-Schutz ausgeschaltet kompiliert.

+0

* lol * der Krieg gegen Cracker ist unsere weiß-Hüte Stoppen des Handels zu lernen. Vielleicht werden die Kriminellen weggehen, wenn wir nicht wissen, wie sie es machen? ;) –

+0

Würde [dieser Link] (http://pwet.fr/man/linux/administration_systeme/execstack) helfen? – jpalecek

Antwort

5

Sie wollen wahrscheinlich mit der -z execstack Flagge in Ihrem GCC Kompilation zusammen mit -fno-stack-protector (deaktivieren GCC SSP/Propolice Stapelschutz), das heißt kompilieren:

gcc -fno-stack-protector -z execstack -o vuln vuln.c 

Alles sollte wohl nach diesem entpuppen jake. Beachten Sie, dass sysctl -w kernel.randomize_va_space=0 nur Adreßraum-Randomisierung und nicht Stack-Schutz per se ist; Das kann brutal gegen die Verwendung einer Vielzahl von Techniken sein.