|
Wenn die Prozedur readstr, return ausführt, findet
ein Sprung zu der Adresse statt, die mit return address
markiert ist.
| |
Indem wir also 8 Bytes über das Ende des Buffers name
hinausschreiben, können wir das Ziel dieses Sprungs beliebig
manipulieren.
| |
Am aller einfachsten wäre es, wenn es in dem fehlerhaften
Programm bereits irgendwo Code gebe, zu dem wir springen können,
um das Ziel unseres Angriffs zu erreichen. Das ist aber eher
selten der Fall.
| |
Die nächste Idee ist, daß wir unseren eigenen Code mitbringen.
Dazu füllen wir den Anfang des Buffers mit dem Code, den wir
ausführen wollen. Die Rücksprungadresse wird so manipuliert,
daß bei einem return zum Anfang des von uns gefüllten Buffers
gesprungen wird.
| |
Damit kann (fast beliebiger) Code zur Ausführung gebracht werden.
|
Copyright © 2002 Andreas Borchert/Christian Ehrhardt, in HTML konvertiert am 18.06.2002 |