Wir haben einen Stack und der ist in mehrere Ebenen aufgeteilt. Der Stack funktioniert mit dem Prinzip „Last in, first out“, also, dass was als letztes rein gekommen ist, muss auch zuerst wieder draußen sein.

Wichtig zu wissen ist auch, wie Adressen geschrieben werden. Dabei gibt es zwei Möglichkeiten:

1.     Little Endian: Adresse wird verkehrt herum geschrieben

2.     Big Endian: Adresse wird gerade geschrieben

Als Beispiel: Wir haben 40 Zeichen, in die wir schreiben können, und wir überschreiben diese 40 Zeichen. Wir kommen nun zum Instruction Pointer und der liegt bei 48 Zeichen. Nun weißt du das Offset vom Überschreiben bis zum Instruction Pointer 48 Zeichen sind. Man fängt nun an mit Spiking und versucht eine Funktion zu finden, die man zum Crashen bringen kann. Man schreibt nun so oft einen Wert (z.B. 5.000) in die Funktion, bis diese crasht. Das kann man benutzen, um schlussendlich ans Offset zu kommen. Wir schreiben nun die 48 „A“s rein und auch noch 4 „B“s damit wir den Placeholder für EIP (Instruction Pointer) vollfüllen. Danach schreiben wir aber auch noch 400 „C“s rein, damit wir wissen, ob genug Platz für die Payload im Stack ist.

Allgemein gesagt, versucht man im Stack seinen Shellcode abzulegen und den Instruction Pointer dann irgendwie zum Shellcode zurück springen zu lassen. Dafür gibt es mehrere Angriffe:

o   Jump ESP: Instruction Pointer Adresse wird erfüllt und wurde durchgelaufen. Dann liegt am Stack genau die Payload.

o   Jump EAX: Gibt es ein Register, was auf unseren Wert zeigt.

o   Direktes reinzeigen: Wir springen genau zu einem NOP-Sled, dafür brauchen wir aber eine genaue Adresse, die zu unserem NOP-Sled zeigt.

Bufferflows sind ein gutes Hilfsmittel, da man mit ihnen viel ausnutzen und schaffen kann. 

Senior Security Consultant/Penetration Tester | CEO

Home Seo Blog

Unsere Partner

Teile uns auf den sozialen Medien

Cookie Warnung

Akzeptieren Für statistische Zwecke und um bestmögliche Funktionalität zu bieten, speichert diese Website Cookies auf Ihrem Gerät. Das Speichern von Cookies kann in den Browser-Einstellungen deaktiviert werden. Wenn Sie die Website weiter nutzen, stimmen Sie der Verwendung von Cookies zu.