Return nach Buffer Overflow Exploit

Gast #5218942
Lesenswert?
• ▲
▼
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 8 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.