Attaque UNION — trouver la colonne compatible texte
SQL injection UNION attack, finding a column containing text
Objectif : insérer une ligne UNION contenant la valeur-test (PjNkGQ) pour identifier quelle colonne accepte des chaînes, afin d’extraire ensuite des données textuelles.
1) Confirmer le nombre de colonnes (si non déjà connu)
Tester avec
ORDER BYincrémental :Quand
ORDER BY Nprovoque une erreur, le nombre de colonnes est< N.
2) Injecter une ligne UNION contenant la valeur fournie
UNION contenant la valeur fournieExemple pour 3 colonnes :
— si la réponse affiche
PjNkGQ, la 2ᵉ colonne est compatible texte.
3) Variantes pour localiser la colonne visible
Tester la constante dans chaque position :
Utiliser constantes distinctes pour cartographier les colonnes visibles :
4) Gérer les erreurs de types
Si
UNIONéchoue pour incompatibilité de type, utiliserNULLpour les colonnes non textuelles ou caster la constante selon le SGBD :MySQL / PostgreSQL :
MSSQL :
Oracle :
Si certaines colonnes exigent des types numériques, laisser
NULLpour celles-ci et placer le texte uniquement dans la colonne candidate.
5) Si un WAF / filtrage bloque UNION
UNIONVarier le commentaire / espacement :
-- -,--,/* ... */.Construire la chaîne via fonctions (ex.
CONCAT('P','jNkGQ')) pour contourner une normalisation stricte.
6) Résultat attendu
La réponse contient
PjNkGQ→ colonne texte identifiée. À partir de là, construire lesUNION SELECTpour l’énumération (tables/colonnes/dumps).
Mis à jour
Ce contenu vous a-t-il été utile ?