| Hauptproblem: Wo ist die Startadresse des Buffers?
Diese muß dem Angreifer zuvor bereits bekannt sein,
um die gesicherte Kopie von %i7 entsprechend überschreiben
zu können.
|
| Winzigste Abweichungen (anderer C-Compiler, andere
Übersetzungsoptionen, andere Bibliotheken, anderes
Solaris-Release) führen zu nicht unbedeutenden
Änderungen dieser Adresse.
|
| Die nop-Operationen (no operation)
erhöhen etwas die Toleranz beim ``Treffen''.
|
| Nächstes Problem: Wie kann relativ zum Code
adressiert werden? Lösung: Nach der call-Operation
zeigt das Register %o7 genau auf diese.
|
| Hinweis: Der SPARC-Prozessor ist eine Drei-Adreß-Maschine,
bei der zuerst die Operanden und dann das Ziel angegeben wird.
|
| Danach findet die Vorbereitung des exec-Systemaufrufs
statt: %o0, der auf den Pfad des
auszuführenden Programmes zeigt, ist der erste Parameter.
Hier: ``/bin/sh''.
|
| Der zweite Parameter in %o1 zeigt auf den argv[]-Vektor,
der aus ``/bin/sh'', ``-c'' und dem aufzurufenden Kommando
besteht, das unmittelbar hinter dem Code abgelegt wird.
|