2016-09-08 16 views
0

Ich versuche, einen Pufferüberlaufangriff in meinem Rechner mit Ubuntu 16.04 neu zu erstellen. Aber egal was ich versuche ich immer die Fehlermeldung ‚Segmentation fault (core dumped)‘Ubuntu 16.04 Pufferüberlauf

ich bereits deaktiviert Speicher Randomisierung unter Verwendung:

sysctl kernel.randomize_va_space=0 

Und ich habe auch diese Flags versucht, wenn mein Programm kompiliert:

-fno-stack-protector 
-z execstack 
-D_FORTIFY_SOURCE=0 

Hinzufügen all diese Flags ich Kompilieren am Ende folgendes:

gcc -z execstack -g -fno-stack-protector -mpreferred-stack-boundary=2 -D_FORTIFY_SOURCE=0 -o code code.c 

Aber nichts scheint zu funktionieren. Gibt es einen anderen Schutz, den ich deaktivieren muss, um meinen Pufferüberlauf erfolgreich wiederherzustellen?

+0

Versuchen Sie, die Sicherung im Netzstecker mit Alufolie einzuwickeln. –

Antwort

2

Ich denke, dass Sie das Mögliche getan haben und etwas, das nicht unbedingt erforderlich ist. Während des Computersicherheitskurses haben wir gerade die Quelle mit den folgenden Flags kompiliert: -O0 -mpreferred-stack-boundary=2 -g -m32 fno-stack-protector Auf diese Weise deaktivieren Sie Code-Optimierungen, richten Sie den Stack-Pointer auf 4 Bytes, deaktivieren Kanarien und aktivieren Sie gdb (es ist besser, den Debugger zu starten). Denken Sie daran, dass mit m32 der Code für 32-Bit-System kompiliert wird. Wenn Sie Pufferüberlauf von Null lernen, ist es besser, damit zu beginnen (es ist einfacher, Register zu handhaben).

Denken Sie daran, wenn Sie versuchen, mit Pufferüberlauf auszunutzen und Segmentierungsfehler erhalten, überschreiben Sie wahrscheinlich den gespeicherten Frame-Zeiger (aber Sie sollten es wissen, es ist Stack-Zerschlagung: http://insecure.org/stf/smashstack.html).

+0

danke für deine antwort! Es war sehr hilfreich! Ich habe es geschafft, indem ich als 32bit-Programm kompiliert habe, wie Sie es empfohlen haben. – cipher