? Pufferüberläufe und Format -String-Fehler gibt zwei Methoden, von denen die Nutzer die Kontrolle über ein Programm gewinnen können . Typischerweise in niedrigerer Ebene Sprachen wie C oder C gefunden + + , die beide auf einem Hacker- Fähigkeiten , um Benutzereingaben zu manipulieren, um ein Programm in anderer Weise als es beabsichtigt war nicht berufen . Pufferüberläufe beruhen auf einem Mangel an Sicherheitsmaßnahmen rund um Benutzereingaben, während Format -String-Fehler innerhalb des eigentlichen Eingang /Ausgang Funktionalität einer Programmiersprache auftreten . Verstehen, wie jedes Werk verstehen, warum sie auftreten in Code erfordert . Buffer Overrun
ein Pufferüberlauf während der Programmausführung , wenn ein Puffer Datenstruktur auf Benutzereingaben verarbeiten bestimmt auftreten kann, ist zu viel Daten zu handhaben gegeben . Zum Beispiel könnte ein Programmierer ein Array deklarieren Struktur, die Zeichen, die in Benutzer-Log -in-Daten zu nehmen. Der Programmierer kann wählen, um die Größe des Arrays zu 25 Zeichen beschränkt . Wenn die Programmierer nicht gestellt hat keine Vorkehrungen getroffen , kann der Benutzer eine beliebige Menge von Daten als eine Log -In-Namen eingeben . Wenn der Benutzer dies tut, überrannt die zusätzlichen Zeichen über 25 den Speicherplatz des Arrays und korrupte Daten in benachbarten Speicherplätzen . Dies nennt man einen Pufferüberlauf .
Pufferüberläufe und Sicherheit
Hacker können die Vorteile der Puffer-Überläufe zu ergreifen, um den Weg der Programmausführung zu ändern. Wenn ein Hacker weiß, wie ein Programm funktioniert, dann weiß sie auch , welche Arten von Daten in der Nähe des Zeichen-Array sind . In der Programmiersprache C , werden die Variablen und Funktion auf im Speicher gespeichert. Wenn eine Variable oder Funktion Referenz wohnt in der Nähe des Array , kann ein Hacker das Array in einer solchen Weise, dass der Wert einer Variablen ändern überrannt , so dass es in log ermöglichen mit falschen Anmeldeinformationen . Der Hacker kann auch eine Funktion so zu verändern , dass es bösartige Code ausgeführt und erlaubt die Hacker in das System.
Format Strings
A " Format-String " stellt eine besondere Argument geliefert , um Input-und Output -Funktionen in C. zum Beispiel nimmt der " printf () "-Funktion als erstes Argument einen Format-String , dass die Einzelheiten , wie die Ausgabe für den Benutzer aussehen sollte. Im Anschluss daran erfolgt die printf ()-Funktion eine variable Liste von Argumenten , die auszugebenden Daten durch den Format-String formatiert. Das folgende Beispiel erläutert, wie eine Format-String arbeitet in Zusammenhang mit einem Format-String enthält eine Format -Zeichen ( "% d" ) , dass ein Integer-Argument wird dieses Zeichen in der Ausgabe ersetzen bedeutet :
printf (" Dieses wird die Format-String , durch eine ganze Zahl von% d " , 56 gefolgt ausdrucken );
Format Streicher und Sicherheit
Format String Sicherheitsprobleme auftreten, wenn ein Benutzer schafft es Eingang eine Format-String- haltigen Formatierung Charakter nicht durch den Programmierer gedacht. Wenn ein printf ( )-Funktion aufgerufen wird, wird die Format-String und die Argumente nach es in den Speicher geschoben , und die Funktion " Spaziergänge " durch die Erinnerung , ersetzt alle Formatierungen Zeichen mit Werten in entsprechenden Speicherorten . Wenn ein Hacker Einsätze Formatierung Zeichen in einem String , kann sie vielleicht lesen die Werte der Daten liegt irgendwo in der Nähe auf dem Stapel - und wenn sie den Stapel lesen kann , weiß sie, wie und wo die Daten verändern und zu manipulieren Programmausführung
.