Attaque UNION — extraire plusieurs valeurs dans une seule colonne
SQL injection UNION attack, retrieving multiple values in a single column
Objectif : récupérer username et password concaténés dans une seule colonne et s’authentifier ensuite en administrator.
1) Pré-requis rapides
Connaître le nombre de colonnes retournées par la requête (cf.
ORDER BY/UNION NULLtests).Identifier quelle(s) colonne(s) de sortie sont rendues dans la réponse (constantes visibles).
2) Payloads exemples (selon SGBD)
Adapter le nombre de colonnes (
NULL/constantes) pour correspondre à la requête vulnérable.
Oracle / PostgreSQL (concat par
||) — requête typique 2 colonnes :
MySQL (CONCAT) — 2 colonnes :
MSSQL (CONCAT ou +) — 2 colonnes :
ou
Si la requête originale a 3 colonnes (ex.) :
Si types incompatibles (erreur UNION) : forcer conversion / cast :
PostgreSQL:
username::textMySQL:
CAST(username AS CHAR)Oracle:
TO_CHAR(username)
3) Procédure concise
Détermine
Ncolonnes (ORDER BY 1..N).Confirme
UNION SELECTavecNULL/constantes.Injecte le payload de concaténation adapté au SGBD et au nombre de colonnes.
Repère dans la réponse les lignes
username:password.Identifie l’entrée
administrator:…et utilise ces identifiants pour te connecter sur la page d’authentification.
4) Remarques pratiques
Si les mots de passe sont hachés (ex. bcrypt), l’utilisation directe pour login échouera — il faudra alors utiliser un bypass d’auth si autorisé ou confirmer que les mots de passe sont en clair (fort incident de sécurité).
Si l’application n’affiche qu’une colonne, concaténation est la bonne approche ; si elle rend plusieurs colonnes, préférer
UNION SELECT username, passwordpour clarté.Si
UNIONest filtré, tenter variations d’espacement/commentaires ou fonctions (CONCAT,CHR/CHAR) pour contourner les filtres.
Mis à jour
Ce contenu vous a-t-il été utile ?