Injection SQL aveugle par délai — exfiltration
Blind SQL injection with time delays and information retrieval
La valeur du cookie TrackingId est interpolée dans une requête SQL exécutée synchrone. On provoque une pause conditionnelle (SLEEP / pg_sleep) lorsque une assertion est vraie ; on déduit l’information en mesurant le temps de réponse (≈ délai si condition vraie).
PostgreSQL
Sleep 5 s simple :
Conditionnelle (tester si
username='administrator'→ 5 s) :
Tester longueur du mot de passe = 20 :
Tester caractère à la position
pos:
Remarque Postgres : parfois il faut adapter la position du
FROMselon la requête injectée ; les exemples ci-dessus sont des patterns courants.
MySQL
Sleep 5 s simple :
Conditionnelle (substring) :
Tester longueur = N :
MySQL :
IF(condition, sleep(sec), 0)est la forme standard ; utiliserSUBSTRING(...)etLENGTH(...).
Exemples concrets (cookie complet)
Supposons BASE=abc123 et session 'SESSION=XYZ'.
Postgres — test caractère pos=1 == 'a' :
MySQL — test caractère pos=1 == 'a' :
Script Python automatisé (corrigé, Postgres & MySQL adaptables)
Ce script mesure la latence et reconstruit caractère par caractère. Paramètres : TARGET, BASE_TRACKING, SESSION, SGDB ('postgres' ou 'mysql'), alphabet, délai attendu (SLEEP_SEC) et MAX_LEN.
Pour Postgres,
SGDB="postgres".Pour MySQL,
SGDB="mysql".Réduis
ALPHABETsi tu connais charset (gain énorme).Ajuste
MAX_LEN/SLEEP_SECselon la cible.Gère retries/exponential backoff si nécessaire.

Mis à jour
Ce contenu vous a-t-il été utile ?