SQL-Injection ist eine Angriffstechnik, bei der bösartiger SQL-Code in Eingabefelder oder Parameter eingefügt wird, um Datenbanken zu manipulieren oder unbefugten Zugriff zu erlangen. Im Folgenden sind die wichtigsten Arten aufgelistet:
Angreifer fügen schädlichen SQL-Code in Eingabefelder wie Formulare oder URL-Parameter ein.
Beispiel: Eingabe wie ' OR '1'='1
in einem Login-Feld, um die Authentifizierung zu umgehen.
Der Angreifer erhält keine direkten Fehler- oder Datenbankmeldungen, sondern schließt auf Basis der Anwendungsreaktionen (z. B. Verzögerungen oder unterschiedliche Antworten) auf die Datenbankstruktur.
Unterarten:
SLEEP()
), um Rückschlüsse zu ziehen.Nutzt den SQL UNION
-Operator, um Daten aus anderen Tabellen abzufragen, die nicht direkt mit der ursprünglichen Abfrage verbunden sind.
Beispiel: SELECT name FROM users WHERE id=1 UNION SELECT password FROM admin
.
Der Angreifer löst absichtlich Datenbankfehler aus, um Informationen über die Datenbankstruktur (z. B. Tabellen- oder Spaltennamen) zu erhalten.
Beispiel: Eingabe von ungültigem SQL-Code wie 1' AND 1=CONVERT(int,@@version)--
.
Daten werden über einen separaten Kanal (z. B. DNS-Anfragen oder HTTP-Anfragen) aus der Datenbank extrahiert, wenn direkte Antworten nicht möglich sind.
Beispiel: Nutzung von Funktionen wie UTL_HTTP
in Oracle, um Daten an einen externen Server zu senden.
Ähnlich wie blinde SQL-Injection, aber der Angreifer nutzt indirekte Methoden, um Informationen zu sammeln, ohne direkte Datenbankantworten zu sehen.