Heyho zusammen, wir müssen gerade für die Uni einen Buffer-Overflow ausnutzen, um einen Eploit-Code einzuschleusen. Wir haben ein Programmcode für einen Cortex-M4 bekommen, bei dem eine absichtlich unsichere Funktion eingebaut ist, die einen String vom User mit memcopy in ein Array kopiert. Ich habe es soweit geschafft, dass mein Exploit-Code in das Array auf den Stack geschrieben wird. Außerdem habe ich es schon geschafft, die über dem Array liegende return-Adresse so abzuändern, dass sie nun auf meinen eingeschleusten Code zeigt. Der macht dann eine LED an ;) Soweit, so gut. Allerdings ist es Teil der Aufgabe, das ganze so zu machen, dass der weitere Programmablauf nicht gestört wird. Mit dem Übschreiben der return Adresse habe ich mir aber ja quasi meine "Rückfahrkarte" zerstört. Wie schaffe ich es also, dass nach der Ausführung meines Exploits das Programm normal weiter läuft? Mein Idee war es irgendwie die ursprüngliche return-Adresse zu speichern und nach der Ausführung meines Codes dann den Program Counter auf diese zu setzen. Das habe ich aber bisher nicht geschafft.
energetic schrieb: > Wie schaffe ich es also, dass nach der Ausführung meines Exploits das > Programm normal weiter läuft? Bei Cortex-M4 sind die Addressen konstant. D.h. man liesst im Debugger die originale Addresse ein und räumt den Explotcode hinterher so auf, dass wieder die korrekte Addresse drin steht und SP wieder stimmt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.