Oui, Key Leaks

Flag: ECW{M4stery_Of_All_T3chniques_gg}

Challenge

circle-info

Description


OuiKeyLeaks have been seized for publishing a bad article about drones!

Out of curiosity, can you help us pentesting this website ? Try retrieving the admin's password hash.

_Spoiler : It's going to take some escalation ! Have fun. _

Challenge made by:

circle-exclamation

Solution

Accèder au site

Pour accèder au site, il faut avoir le cookie magic_cookie=investigator. On le voit dans le code source du la page :


Retirer les pubs (confort)

Bon, c'est plutôt embêtant les popups toutes les 5 secondes.

Dans le fichier /js/ads.js, on trouve le cookie premium qu'il faut mettre à "true" pour empêcher cela.


XSS

Il y a une fonction de chat sur le site. Les messages reçus sont directement injectés dans l'HTML avec la l'attribut innerHTML. C'est là qu'on peut injecter des éléments qui seront interprétés et donc exécuter du JS.

Donc dès qu'un autre utilisateur se connecter, on leak ses cookies en envoyant le payload :

Maintenant on a le cookie : guid=51af8760-3cbf-4344-bcba-7f142d3157e7


On accède au panneau admin en cliquant sur le titre du site

Sur le panneau /admin, on peut voir les logs du serveur. On va les analyser avec un LLM pour aller plus vite.

Nouvel endpoint : /admin/notes.txt. Dessus on trouve une partie du code du serveur. Celle-ci est vulnérable.


Injection SQL

Pour utiliser la fonction donc on connaît le code, il faut aller sur /admin/api/user.php. On peut le voir dans les requêtes effectuées par le site et en comparant le retour obtenu avec ce que le code est censé nous renvoyer (un json contenant les infos du user).

On va l'injecter pour récupérer le nom de toutes les colonnes.

Et maintenant, go dump toute la table :

Le flag est dans le dernier user, dans la colonne password_hash.

Mis à jour