LE GORFOU 42
404CTF{Xx-@LL-MY-H0MI3Z-LUV-SQLI-xX}
Dernière mise à jour
Cet article vous a-t-il Γ©tΓ© utile ?
404CTF{Xx-@LL-MY-H0MI3Z-LUV-SQLI-xX}
Dernière mise à jour
Cet article vous a-t-il Γ©tΓ© utile ?
CatΓ©gorie: Web DifficultΓ©: medium Flag: -
Voici le site web du journal de football LE GORFOU 42 ! Il est tout neuf, dispose de quelques articles intΓ©ressants et, est super sΓ©curisΓ©... non ?
Connexion:
Ce challenge tourne sur un docker et n'est pas disponible
Ce challenge consiste Γ exploiter une injection SQL, mais aucun des champs de saisie dans l'onglet articles ou connexion semblent vulnΓ©rables.
Il faut pour cela se rendre sur la page 404 en tapant n'importe quel chemin sur le site, par exemple /zob
La page prΓ©sente alors un input vulnΓ©rable Γ une injection.
Comme on rΓ©cupΓ¨re une liste d'articles, on pense tout de suite Γ un UNION SELECT pour faire fuiter des informations. La requΓͺte effectuΓ©e sur le serveur va rΓ©cupΓ©rer, a minima, le titre et le contenu des articles. On peut donc joindre les donnΓ©es Γ leak dedans.
Pour Γ§a, on commence par identifier le nombre de colonnes :
On a donc 2 colonnes et la valeur de la seconde nous est renvoyΓ©e en tant que titre d'article, c'est ici que nous allons leak des donnΓ©es.
De lΓ , on peut identifier plus prΓ©cisΓ©ment le service de base de donnΓ©es ainsi que sa version
On a donc confirmation que c'est du sqlite 3
On commence par dump le nom des tables qui existent
Maintenant le nom des colonnes de la table Xx_US3RS_xX
Donc voici la table des utilisateurs :
Voici les comptes extraits :
On peut maintenant se connecter
Une fois connectΓ©, on nous demande un code. Ici Γ©galement, il s'agit d'une injection SQL dans le nom d'utilisateur.
Des tests permettent de gΓ©nΓ©rer des erreurs :
Avec Google et un peu d'intuition, les erreurs nous font dire que l'on injecte dans une fonction. En toute logique, on peut partir sur l'hypothèse que la fonction prend en paramètre le nom de l'utilisateur et retourne le code attendu, code qui est ensuite comparé avec celui que l'on envoie.
On va donc fermer la fonction puis faire un UNION SELECT pour retourner un code arbitraire
Une fois la vΓ©rification passΓ©e, on peut accΓ©der Γ la section "Administration" et rΓ©cupΓ©rer le flag
Ici on ne va pas rΓ©inventer la roue, donc on s'appuie sur des ressources comme pour prΓ©parer nos requΓͺtes