Je veux la lune !

Catégorie: Exploitation de binaires - Difficulté: Intro

Description:

Netcat : nc challenges.404ctf.fr 31215

Solution:

Pour ce chall, nous avions accès au code source déployé sur le netcat grâce au fichier .sh fourni dans l'énoncé.

En regardant ce fameux code source nous voyons ce qui est fait lorsque nous lançons la commande netcat et entrons un mot lorsque le script le demande :

#!/bin/bash

Caligula=Caius

listePersonnes="Cherea Caesonia Scipion Senectus Lepidus Caligula Caius Drusilla"

echo "Bonjour Caligula, ceci est un message de Hélicon. Je sais que les actionnaires de ton entreprise veulent se débarrasser de toi, je me suis donc dépêché de t'obtenir la lune, elle est juste là dans le fichier lune.txt !

En attendant j'ai aussi obtenu des informations sur Cherea, Caesonia, Scipion, Senectus, et Lepidus, de qui veux-tu que je te parle ?"
read personne
eval "grep -wie ^$personne informations.txt"

while true; do
    echo "De qui d'autre tu veux que je te parle ?"
    read personne

    if [ -n $personne ] && [ $personne = "stop" ] ; then
    exit
    fi

    bob=$(grep -wie ^$personne informations.txt)
    
    if [ -z "$bob" ]; then
        echo "Je n'ai pas compris de qui tu parlais. Dis-moi stop si tu veux que je m'arrête, et envoie l'un des noms que j'ai cités si tu veux des informations."
    else
        echo $bob
    fi  

done

Ici nous comprenons que dans la boucle while, il va nous demander d'entrer du texte qu'il stockera dans la variable personne. Si nous entrons par exemple Cherea ou Scipion, nous avons les phrases du fichier informations.txt qui contiennent chacune le pseudo envoyé :

Mais quand nous entrons un texte qui n'est pas dans la liste des personnes, un message nous indique qu'il n'a pas compris :

Maintenant il faudrait comprendre comment nous pourrions lire le contenu du fichier lune.txt comme énoncé dans la description du chall. Si nous essayons d'entrer 404CTF ou des commandes comme telles que cat lune.txt ou nano lune.txt nous n'avons aucun résultat...

N'ayant que très peu (voir aucunes) connaissances en pwn, j'ai tenté de voir ce que nous pouvions faire avec la commande grep qui était exécutée. J'ai donc continué à chercher pour voir ce que je pouvais faire et après une trentaine de minutes à réfléchir sur la manière de faire, j'ai eu un éclair (de génie si on veut).

J'ai pensé à rentrer directement ce que nous cherchions "404CTF" ainsi que le fichier à lire (lune.txt). Cela donne donc cette commande lorsque le script nous le demande :

Grâce à cela, nous obtenons bien le flag que nous cherchions.

🚩 FLAG
404CTF{70n_C0EuR_v4_7e_1Ach3R_C41uS}

Last updated