-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.
Grundlegende Optionen für den Einstieg: URL, Request-Datei, Parameter und Header.
| 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 |
-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.
Optionen steuern die Tiefe, Geschwindigkeit und Intensität des Tests.
| 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 |
--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 definieren, welche SQL-Injection-Methoden verwendet werden. Standardmäßig testet sqlmap alle 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 |
Enumeration ermöglicht das Auslesen von Datenbanknamen, Tabellen, Spalten und den eigentlichen Daten.
| 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 |
--start=1 --stop=10 oder --columns gefolgt von --dump -C spalte – das reduziert die Anzahl der Anfragen und schont den Server.
Fortgeschrittene Funktionen ermöglichen das Ausführen von Systembefehlen, das Hochladen von Dateien und die Umgehung von Web Application Firewalls (WAF).
| 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 |
--os-shell und --file-write können erheblichen Schaden anrichten. Verwenden Sie diese Funktionen nur mit ausdrücklicher Genehmigung in autorisierten Umgebungen.
Best Practices für effiziente und sichere Tests mit sqlmap.
| 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 |
--smart für schnelle erste Tests. Bei komplexen Anwendungen ist --level=3 --risk=2 ein guter Kompromiss zwischen Gründlichkeit und Geschwindigkeit.
-u
--technique
--dbs
--os-shell
--batch
sqlmap -u "http://target.com/page?id=1" --dbs --batch ·
sqlmap -r request.txt -D db -T table --dump