Forum: Mikrocontroller und Digitale Elektronik Return nach Buffer Overflow Exploit


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von energetic (Gast)


Bewertung
0 lesenswert
nicht 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.

von Jim M. (turboj)


Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.