So deaktivieren Sie die GCC-Compiler-Optimierung, um den Pufferüberlauf zu aktivieren
Arbeite ich an einem Hausaufgaben problemdie erfordert, dass das deaktivieren der compiler-Optimierung Schutz für Sie zu arbeiten. Ich bin mit gcc 4.4.1 auf ubuntu-linux, aber kann nicht herausfinden, welche flags sind, die richtigen sind. Ich merke es an der Architektur abhängig - meine Maschine läuft w/32-bit-Intel-Prozessor.
Dank.
InformationsquelleAutor der Frage sa125 | 2010-02-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das ist ein gutes problem. Um dieses problem zu lösen Sie müssen auch deaktivieren ASLR sonst die Adresse von g() wird unberechenbar sein.
Deaktivieren ASLR:
Deaktivieren Kanaren:
Nach Kanaren und ASLR deaktiviert sind, sollte es ein straight forward angreifen, wie diejenigen, beschrieben in Smashing the Stack for Fun and Profit
Hier ist eine Liste von Sicherheits-Funktionen in ubuntu: https://wiki.ubuntu.com/Security/Features Sie nicht haben, um sorgen über die NX-bits, die Adresse von g() wird immer in einen ausführbaren Bereich des Speichers, da es innerhalb der TEXT-memory-segment. NX-bit nur dann ins Spiel kommen, wenn Sie versuchen zum ausführen von shellcode auf dem stack oder heap, die nicht notwendig für diese Aufgabe.
Nun gehen und Klamotten, die EIP!
InformationsquelleAutor der Antwort rook
Urm, alle die Antworten bisher falsch gewesen, mit Turm, die Antwort richtig ist.
Eingabe:
Gefolgt von:
ASLR deaktiviert, SSP/Propolice und Ubuntu NoneXec (die war platziert in 9.10, und ziemlich einfach zu umgehen, sehen die mprotect(2) Technik " imagemap-Seiten als ausführbare Datei und jmp) soll helfen ein wenig, aber diese "Sicherheitsfeatures" sind keineswegs unfehlbar. Ohne die Option "- z execstack " flag, Seiten haben non-executable stack Markierungen.
InformationsquelleAutor der Antwort Muhammed Abiola
Auf neueren Distributionen (ab 2016), es scheint, die TORTE ist standardmäßig aktiviert, so dass Sie brauchen, um es zu deaktivieren explizit beim kompilieren.
Hier ist eine kleine Zusammenfassung von Befehlen, die hilfreich sein können bei der Wiedergabe lokal mit buffer-overflow-übungen im Allgemeinen:
Deaktivieren Kanarischen:
Deaktivieren Sie DEP:
Deaktivieren PIE:
Deaktivieren Sie alle Schutz-Mechanismen aufgeführt ist (Achtung: für die Prüfung):
Für 32-bit-Maschinen, die Sie hinzufügen müssen, die
-m32
parameter als gut.InformationsquelleAutor der Antwort Aydin K.
Versuchen die
-fno-stack-protector
Flagge.InformationsquelleAutor der Antwort Kyle Lutz
Ich weiß, es ist ein Alter thread, aber ich möchte darauf hinweisen, dass Sie nicht brauchen, um ASLR deaktivieren, um zu tun, einen buffer overflow! Obwohl ASLR Aktiviert ist(kernel_randomize_va_space = 2) wird es nicht wirksam, es sei denn, Sie die kompilierte ausführbare Datei ist PIE, also, wenn u kompilieren der Datei mit dem -fPIC -pie-flag, ASLR nicht wirksam werden.
Ich denke nur das deaktivieren der Kanaren mit -fno-stack-protector ist genug.
Wenn Sie möchten, um zu überprüfen, ob ASLR oder nicht funktioniert(Position independent code muss festgelegt werden), verwenden Sie: - Härten-prüfen executable_name
InformationsquelleAutor der Antwort AhlyM
Werde ich nicht zitieren, die gesamte Seite, sondern die ganze manuelle Optimierung ist hier erhältlich: http://gcc.gnu.org/onlinedocs/gcc-4.4.3/gcc/Optimize-Options.html#Optimize-Options
Von den Klängen der es, Sie wollen mindestens
-O0
der Standard, und:InformationsquelleAutor der Antwort