Solution de Cyrhades pour Meme Generator

intro web

2 mai 2025

Étape 1: Tester le bot

Tout dabord nous allons nous connecter avec netcat pour voir ce qui est attendu.

Avec la commande nc localhost 4000

On obtient :

Capture_1

Les console.log nous seront retournés, très intéressant.

Pour voir le comportement j’ai entré l’url http://google.fr

Ce qui m’a donné :

Capture_2

2 informations intéressantes en ressortent :

Setting the flag in the localStorage for http://meme-generator/

On sait qu’il y a le flag dans le localstorage et quelle adresse nous devons faire appeler par le bot !

Étape 2: Découvrir le site

Connectons-nous maintenant sur la partie web : http://localhost:8000/

Capture_3

Donc, le fonctionnement est simple : on clique sur une image à gauche et le formulaire à droite devient actif, on rentre un texte et on a notre mème  !

Étape 3: Faire une alerte

Première chose qui parait logique, c’est de tenter une injection XSS depuis le texte. En entrant le texte : <script>alert("hello world");</script> dans le champ, cela nous redirige (on aura donc une injection XSS de type Reflected depuis les données provenant de la queryString).

localhost:8000/?image=chill.jpeg&text=<script>alert("hello world");</script>

Capture_4

On s’aperçoit que le texte entré est modifié en MAJUSCULE.

Cependant, on voit que le nom de l’image est également dans l’url et si on tentait l’injection via l’image ?

localhost:8000/?image=chill.jpeg"><script>alert("Hello World");</script>&text=YOUPI

Cela nous donne:

Capture_5

On a réussi à faire l’alerte!

Étape 4: Faire le console log du flag dans localstorage

Pour pouvoir tester comme il se doit, nous allons créer un flag de test dans notre localStorage.

Ouvrez la console de votre navigateur et, dans la console, exécutez  :

localStorage.setItem('flag','test de Cyrhades')

Et appelez l’url : localhost:8000/?image=chill.jpeg"><script>console.log(localStorage.getItem('flag'));</script>&text=YOUPI

Si vous voyez “test de Cyrhades” dans la console, c’est réussi:

Capture_6

Étape 5: Préparer et envoyer l’injection au BOT

Nous avions vu que le bot nous retournerait les console.log ainsi que l’url a appelé était http://meme-generator, nous allons donc adapter notre injection!

http://meme-generator/?image=grumpy.jpeg"><script>console.log(localStorage.getItem('flag'))</script>&text=oops

Retournez sur netcat : nc localhost:4000

Puis envoyez l’url : http://meme-generator/?image=grumpy.jpeg"><script>console.log(localStorage.getItem('flag'))</script>&text=oops

Capture_7

Vous obtenez le flag.