Injection SQL aveugle par erreurs conditionnelles

Blind SQL injection with conditional errors

Contexte : la valeur du cookie TrackingId est injectée dans une requête SQL. L’application ne renvoie pas directement le résultat, mais déclenche une erreur HTTP 500 quand l’expression SQL provoque une exception (ici TO_CHAR(1/0) sur Oracle). On exploite ce canal : si la condition est vraie → erreur 500, sinon réponse 200. La base contient une table users(username, password). Objectif : extraire le mot de passe de administrator et se connecter.

Principe technique (rapide)

  • On place dans le cookie une expression qui force une erreur si la condition est vraie, par ex. (Oracle) :

  • Si <condition> est vraie → requête provoque division par zéro → application renvoie 500 → bit = 1. Sinon 200 → bit = 0.

  • Utiliser SUBSTR/LENGTH pour extraire caractère par caractère.

Payloads exemples (Oracle)

  • Vérifier existence de l’utilisateur :

  • Tester longueur = 20 :

  • Tester un caractère à la position i :

(les FROM dual / structure peuvent être adaptées selon la requête injectée dans l’application.)

Script automatisé

Mis à jour

Ce contenu vous a-t-il été utile ?