Skip to content

Was sind die wichtigsten Arten von SQL-Injection?

Kurzantwort

SQL-Injection erlaubt einer Angreifereingabe, eine Abfrage zu verändern. In-Band-Techniken geben Daten direkt zurück: Die UNION-basierte hängt ein UNION SELECT an, um zusätzliche Spalten zu ziehen, und die fehlerbasierte lässt Daten über Datenbank-Fehlermeldungen durchsickern. Wenn keine Ausgabe sichtbar ist, nutzen Angreifer blinde SQLi — die boolesche schließt Daten aus Unterschieden in Wahr/Falsch-Antworten, die zeitbasierte nutzt Verzögerungen wie SLEEP(), um Daten Bit für Bit zu lesen.

SQL-Injection entsteht, wenn nicht vertrauenswürdige Eingaben so in eine Abfrage eingefügt werden, dass die Eingabe die Struktur der Abfrage verändert, nicht nur ihre Daten. Angreifer kategorisieren die Techniken danach, wie sie die Daten zurückbekommen — was vollständig davon abhängt, was die Anwendung in ihren Antworten preisgibt.

In-Band: Daten kommen direkt zurück

  • UNION-basiert. Der Angreifer hängt UNION SELECT ... an, damit die Datenbank zusätzliche Zeilen aus anderen Tabellen in derselben Ergebnismenge zurückgibt, die die Anwendung bereits anzeigt. Das erfordert, die Spaltenanzahl und kompatiblen Typen der ursprünglichen Abfrage abzugleichen, oft per ORDER BY-Sondierung oder NULL-Auffüllung ermittelt.
  • Fehlerbasiert. Die Anwendung zeigt Datenbankfehler an, also formuliert der Angreifer Eingaben, die das DBMS zwingen, sensible Daten in eine Fehlermeldung einzubetten (z. B. über Typkonvertierung oder EXTRACTVALUE). Schnell, funktioniert aber nur, wenn ausführliche Fehler zum Nutzer durchsickern.

Blind: keine Daten werden angezeigt, also schließen

Wenn die Anwendung keine Abfrageausgabe und keine Fehler zurückgibt, extrahiert der Angreifer die Daten ein Boolean nach dem anderen:

  • Boolesch. Eine Bedingung einschleusen (AND 1=1 vs. AND 1=2) und beobachten, ob sich der Seiteninhalt ändert (Ergebnisse angezeigt oder nicht). Jede Wahr/Falsch-Antwort verrät ein Bit, sodass der Angreifer Werte Zeichen für Zeichen rekonstruieren kann.
  • Zeitbasiert. Wenn sich nicht einmal der Seiteninhalt ändert, schleust der Angreifer eine bedingte Verzögerung ein — IF(condition, SLEEP(5), 0). Eine langsame Antwort bedeutet „wahr". Es ist die langsamste Methode, funktioniert aber gegen vollständig blinde Endpunkte.

Out-of-Band (erwähnenswert)

Wenn weder In-Band noch Zeitmessung funktionieren, können Angreifer über einen Seitenkanal wie eine DNS- oder HTTP-Anfrage der Datenbank exfiltrieren — nützlich in stark per Firewall abgeschotteten Umgebungen.

Die Lösung für alle ist dieselbe: parametrisierte Abfragen.

Prüfer achten auf die Unterscheidung In-Band vs. blind, auf die Überlegung, dass die Technikwahl davon abhängt, was die Antwort preisgibt, und auf das Erkennen, dass die zeitbasierte das letzte Mittel ist.

Wahrscheinliche Anschlussfragen

  • Warum greift ein Angreifer zur zeitbasierten blinden Injection?
  • Wie muss eine UNION-basierte Injection die Spaltenanzahl und -typen abgleichen?
  • Was ist Second-Order-SQL-Injection?

Quellen

Zertifizierungen

Erhalte 100 Cybersecurity-Interviewfragen + Antworten

Gib deine E-Mail-Adresse ein und wir senden dir das kostenlose PDF-Paket und das Flashcard-Deck.

Kein Spam. Jederzeit abbestellbar.