Attaque UNION — extraire des données d’autres tables
SQL injection UNION attack, retrieving data from other tables
Contexte : filtre category vulnérable à l’injection; la réponse rend les résultats SQL, donc un UNION SELECT permet d’injecter et d’afficher des lignes provenant d’autres tables.
But du lab : récupérer tous les username / password depuis la table users puis se connecter en tant qu’administrator.
Étapes (ordre, payloads exacts)
Déterminer le nombre de colonnes (si inconnu) :
Quand
ORDER BY Nprovoque une erreur, le nombre de colonnes < N.Valider
UNION(même nombre de colonnes que la requête originale) : Exemple si la requête retourne 2 colonnes :ou avec
NULLpour colonnes non pertinentes :Extraire
username/password(adapter le nombre/ordre de colonnes) : Si la requête originale a 2 colonnes :Si elle a 3 colonnes, placer
NULLpour la colonne non utilisée, p.ex. (texte en 2ᵉ position) :— Si types incompatibles : utiliser
CAST/TO_CHARouNULLpour forcer compatibilité :Vérifier la sortie — la réponse doit contenir les paires
username/password.Repérer la ligne
administratoret noter son mot de passe.Utiliser ces identifiants sur la page de login.
Alternative (si l’exfiltration échoue) — bypass d’auth par payload :
(moins probant comme preuve que le dump; privilégier l’exfiltration si possible.)
Précisions techniques
Utiliser des constantes distinctes (ou
NULL) pour repérer quelles colonnes sont affichées.Oracle : noms en MAJUSCULES si non-quotés; peut nécessiter
TO_CHAR.MSSQL/MySQL/Postgres :
CAST/CONVERT/::textsi types différents.Si
UNIONbloqué, tester variations d’espacement/commentaires ou fonctions pour reconstruire la chaîne (CONCAT,CHR/CHAR).
Impact résumé
Compromission d’identifiants (administrateur), prise de contrôle applicative, exfiltration/altération de données.
Mis à jour
Ce contenu vous a-t-il été utile ?