Buffer-Overflow: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 10: Zeile 10:


*Dann folgt der Stack , der lokale Variablen und den Inhalt von Prozessorregistern aufnehmen kann.
*Dann folgt der Stack , der lokale Variablen und den Inhalt von Prozessorregistern aufnehmen kann.
*Im Stack liegen auch die Rücksprung-Adressen von Unterprogrammen, also von Verzweigungen im Hauptprogramm.
*Im Stack liegen auch die Rücksprung-Adressen von Unterprogrammen, also von Verzweigungen im Hauptprogramm.
*Beim Buffer-Overflow wird eine lokale Variable mit mehr Inhalt gefüllt, als für Sie reserviert ist.
*Beim Buffer-Overflow wird eine lokale Variable mit mehr Inhalt gefüllt, als für Sie reserviert ist.
*Dadurch kann der Stack und damit die Rücksprungadresse überschrieben werden.  
*Dadurch kann der Stack und damit die Rücksprungadresse überschrieben werden.  
*Wenn die Rücksprungadresse ungültig ist, kommt es zum Programmabsturz.
*Wenn die Rücksprungadresse ungültig ist, kommt es zum Programmabsturz.
*Der Trick der Hacker besteht jetzt darin, die Rücksprungadresse auf Programmsegmente zu lenken, die den eigentlichen Schadcode enthalten.  
*Der Trick der Hacker besteht jetzt darin, die Rücksprungadresse auf Programmsegmente zu lenken, die den eigentlichen Schadcode enthalten.  



Version vom 7. Oktober 2020, 18:30 Uhr

Was passiert beim Buffer-Overflow

  • Wenn ein Programm gestartet wird, weist ihm das Betriebssystem einen bestimmten Speicherbereich zu.
  • In einem Teil davon liegt der eigentliche Programmcode.
  • Dieser ist geschützt und kann nicht geändert werden.
  • Darüber liegt der Heap , in dem das System globale Variablen und Konstanten ablegt.
  • Dann folgt der Stack , der lokale Variablen und den Inhalt von Prozessorregistern aufnehmen kann.
  • Im Stack liegen auch die Rücksprung-Adressen von Unterprogrammen, also von Verzweigungen im Hauptprogramm.
  • Beim Buffer-Overflow wird eine lokale Variable mit mehr Inhalt gefüllt, als für Sie reserviert ist.
  • Dadurch kann der Stack und damit die Rücksprungadresse überschrieben werden.
  • Wenn die Rücksprungadresse ungültig ist, kommt es zum Programmabsturz.
  • Der Trick der Hacker besteht jetzt darin, die Rücksprungadresse auf Programmsegmente zu lenken, die den eigentlichen Schadcode enthalten.


Quelle

Beispiel