Web Security Academy

SQL injection - Lab : SQL injection UNION attack, finding a column containing text

Objectif :

  • Réussir à rajouter une ligne en plus dans l'affichage des produits du site, contenant la valeur fournie par lab ( dans notre contexte, ça sera la chaîne de caractères " SnjbHf " ) .

Solution :

On lance le lab et on se trouve dans un site de commerce avec des produits affichés :

On peut affiner cet affichage en précisant la catégorie :

Lorsqu'une catégorie est sélectionnée, une requête GET est envoyée au serveur avec comme paramètre le type de produit choisi :

On suppose que les produits sont sans doute stockés dans une base de données. On imagine donc qu'une requête SQL est traitée par le serveur contenant la catégorie désignée.

Il faut maintenant trouver le nombre de colonnes retourné. On va utiliser l'opérateur UNION dans le paramètre GET : Gifts' UNION SELECT NULL--

Ici, on teste la présence d'une colonne et le serveur nous renvoie une erreur :

Le nombre de colonnee ne correspond pas. On teste jusqu'à trois colonnes ( Gifts' UNION SELECT NULL, NULL, NULL-- ) et aucune erreur n'est retournée. le serveur nous renvoie la réponse de base avec une ligne rajoutée dans l'affichage des produits :

On a en effet rajouté une ligne vide grâce à l'opération SELECT NULL, NULL,NULL.

Il suffit d'afficher la valeur fournie par le lab à la place d'une des valeurs NULL avec ce payload : Gifts' UNION SELECT NULL,'SnjbHf ', NULL--

Ce qui donne :

Le lab est désormais résolu !