Wie funktioniert ein NOP sled zu arbeiten?
Ich kann nicht finden, eine gute Quelle, die diese Frage beantwortet. Ich weiß, dass ein nop-sled ist eine Technik, die verwendet wird, zu umgehen Stapel Randomisierung in eine buffer-overflow-Angriff, aber die ich nicht bekommen kann meinen Kopf herum, wie es funktioniert.
Was ist ein einfaches Beispiel, das veranschaulicht diese Methode?
Was bedeuten Begriffe wie 128-byte-nop sled zu bedeuten?
InformationsquelleAutor der Frage amorimluc | 2013-02-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einige Angriffe aus und das Programm springt zu einer bestimmten Adresse, und weiter von dort läuft. Der eingefügte code geladen werden, die vorher irgendwie in genau dieser Position.
Stapel Randomisierung und andere Laufzeit-Unterschiede stellen Sie die Adresse, an die das Programm springen unmöglich vorherzusagen, so der Angreifer legt eine NOP-sled in einem großen Bereich des Speichers. Wenn das Programm springt überall in die Schlitten, die übrigen NOPs für, nichts zu tun, und dann wird die payload-code, direkt neben dem Schlitten.
Der Grund, der Angreifer nutzt die NOP-sled ist, um die Ziel-Adresse größer: der code kann springen überall in den Schlitten, anstatt genau am Anfang des eingefügten Codes.
Einen 128-byte-NOP-sled ist nur eine Gruppe von NOP intructions 128 bytes breit.
HINWEIS #1: NOP (No-OPeration) ist eine Anleitung verfügbar, in den meisten (allen?) Architekturen, die nichts tut, außer zu besetzen Speicher und einige Laufzeit.
HINWEIS #2: bei Architekturen mit variabler Länge, die Anleitung, eine NOP-Anweisung ist in der Regel nur ein byte in der Länge, so dass es kann verwendet werden, als eine praktische Anweisung Polsterung. Leider macht es auch einfach zu tun, eine NOP-sled.
InformationsquelleAutor der Antwort rodrigo
Hinzufügen rodrigo Erklärung - Auch mit einem NOP sled, die Ungefähre Position des Puffers im Speicher, muss vorhergesagt werden. Eine Technik, die für die Annäherung der Speicherposition ist die Verwendung von nahe gelegenen Stapel Position als Bezugsrahmen. Durch Subtraktion eines offset von dieser Position aus, wird die relative Adresse einer variable erhalten werden können.
SEITE HINWEIS: auf der x86-Architektur der NOP-Anweisung ist äquivalent zu der hex-byte 0x90 daher eine abgeschlossene nutzen-Puffer könnte etwa so Aussehen:
Sehen, als wenn das EIP-register Punkte zu jeder Adresse finden Sie in den NOP sled, es würde Inkrement während der Ausführung jede NOP-Instruktion, ein zu einer Zeit, bis es schließlich erreicht der shellcode
InformationsquelleAutor der Antwort Boschko