SQL-Injection
Ein Anführungszeichen in einem Nachschlagefeld schreibt die Abfrage neu.
Was ist SQL-Injection?
Eine vom Benutzer bereitgestellte Zeichenfolge wird zu einer Abfrage verkettet, und diese Zeichenfolge kann ändern, wonach die Abfrage fragt. Jede Anfrage läuft hier gegen eine echte eingebettete Datenbank, sodass nichts gefälscht wird. Sie unterbrechen ein Kontosuchformular mit einem einfachen Anführungszeichen, geben die gesamte Mitgliedertabelle mit ' OR '1'='1 zurück und verwenden dann UNION SELECT und information_schema , um Administrator-E-Mails und Passwort-Hashes daraus abzurufen. Der Fix bindet den Wert als Parameter, sodass die SQL-Grammatik Eingaben nie als Code analysiert. Keine Desinfektion, keine Firewall-Blocklist.
Was Sie lernen in SQL-Injection
- Die Lehrbuch-Tautologie ' OR '1'='1 als SQL-Injection erkennen und erklären, warum eine immer wahre Bedingung einen WHERE-Filter aushebelt
- Nachvollziehen, wie aus einem Endpunkt, der eine einzelne Zeile sucht, ein Lesezugriff auf die komplette Tabelle wird, sobald sein Parameter in den SQL-Text verkettet wird
- Mit UNION SELECT über information_schema die Tabellen der Datenbank aufzählen und Zeilen aus einer Tabelle ziehen, die das Formular nie offenlegen sollte — etwa admin_users
- Parametrisierte Abfragen als verlässliche Gegenmaßnahme von Ansätzen unterscheiden, die an der Zeichenkette herumschrauben — Denylists, Escaping, WAF-Regeln — und erklären, warum nur der parametrisierte Weg hält
- Einen anfälligen Datenbank-Handler so genau lesen, dass der Verkettungsfehler auffällt, und die parametrisierte Lösung bestätigen, indem exakt dieselbe Payload erneut gegen den gepatchten Endpunkt läuft und null Zeilen zurückkommen
SQL-Injection — Trainingsschritte
-
Das Zielformular finden
Bob hat Vantyr im Visier, einen Mitgliederdienst mit einer öffentlichen Seite zur Kontosuche . Keine Anmeldung, nur ein E-Mail-Feld, das den Tarif eines Mitglieds zurückgibt. Genau hier beginnen Angriffe auf Web-Anwendungen: bei einem ganz gewöhnlichen Formular, das im Stillen mit einer Datenbank spricht.
-
Eine normale Suche absenden
Sehen Sie sich zuerst an, wie sich das Formular im Normalfall verhält. Geben Sie die E-Mail-Adresse eines echten Mitglieds ein und senden Sie sie ab. Das Network panel des Browsers öffnet sich und zeichnet die Anfrage auf — genau das, was ein Entwickler in den DevTools sieht.
-
Die Anfrage untersuchen
Da ist die Anfrage. Die eingetippte E-Mail-Adresse reist in der Payload der Anfrage zum Server, und die Antwort liefert genau das eine passende Mitglied zurück. Bis hierhin ist nichts falsch — genau so soll die Funktion arbeiten.
-
Den Handler-Code lesen
Jetzt kommt der interessante Teil: der Server-Code, der diese Anfrage verarbeitet. Er baut die SQL-Abfrage, indem er Ihre E-Mail-Adresse direkt in den Abfragetext einfügt . Diese eine Anweisung ist das ganze Problem.
-
Die Zeile mit der Schwachstelle finden
Diese eine Anweisung ist die gesamte Schwachstelle: Ihre Eingabe wird in den SQL-Text geklebt, und der Kommentar zeigt genau die Abfrage, die an die Datenbank geht — live neu zusammengebaut aus allem, was Sie tippen.
-
Die Abfrage mit einem Anführungszeichen aufbrechen
Im Feld steht noch morgan.lee@example.com aus Ihrer ersten Suche. Ihre Eingabe landet innerhalb einer Zeichenkette in Anführungszeichen — was passiert also, wenn Sie selbst ein Anführungszeichen schicken? Hängen Sie ein einfaches Anführungszeichen an und senden Sie ab. Beobachten Sie dabei, wie sich der Kommentar executed query im Code beim Tippen neu aufbaut: Ihr Anführungszeichen landet innerhalb der Zeichenkette und zerlegt sie. Sie senden keine Daten mehr — Sie bearbeiten die Abfrage.
-
Die Datenbankfehlermeldung lesen
Der Server hat einen 500 mit einer echten Datenbankfehlermeldung zurückgegeben. Das zusätzliche Anführungszeichen hat die Zeichenkette vorzeitig beendet und die Abfrage fehlerhaft zurückgelassen. Die Datenbank hat versucht, sie auszuführen, und ist daran erstickt. So eine Fehlermeldung ist für einen Angreifer grünes Licht: Die Eingabe erreicht die SQL-Engine.
-
Den Filter umgehen
Jetzt bringen Sie die Abfrage dazu, etwas Nützliches für Sie zu tun. Schließen Sie die Zeichenkette selbst, ergänzen Sie eine Bedingung, die immer wahr ist — und der Filter WHERE filtert nicht mehr. Der Klassiker: ' OR '1'='1 .
-
Den vollständigen Datenabzug sehen
Der Filter ist weg. Statt eines einzigen Mitglieds liefert die Antwort die komplette Mitgliedertabelle : jede E-Mail-Adresse und jeden Tarif, den Vantyr führt. Sie haben nach einem Konto gefragt, und die Datenbank hat alle herausgerückt.
-
Wissenscheck
Sie haben gerade gesehen, wie eine einzige Payload die komplette Tabelle zurückgeliefert hat. Prägen Sie sich ein, warum.
Abdeckung der Sicherheits-Frameworks
OWASP Top 10
- A05:2025 Injection
- A03:2021 Injection
CWE
- CWE-89 Improper Neutralization of Special Elements used in an SQL Command
CIS Controls
- CIS 16 Application Software Security
NIST CSF
- PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
- PR.PS Platform Security