# Je veux la lune !

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

{% file src="<https://4219205392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fybn4btwQnvitOl9uXz9p%2Fuploads%2FyvzFOecmZtPuWBktWmdA%2Fdonne_moi_la_lune.sh?alt=media&token=0015c5c1-1c2f-423f-b1de-ea5d79ad0460>" %}

**Description:**

<figure><img src="https://4219205392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fybn4btwQnvitOl9uXz9p%2Fuploads%2F0ZmSZNVQMjCH0pVD96Jz%2Fimage.png?alt=media&#x26;token=514e2843-68fc-44e1-b740-c5865b40858c" alt=""><figcaption></figcaption></figure>

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 :&#x20;

```sh
#!/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é :&#x20;

<figure><img src="https://4219205392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fybn4btwQnvitOl9uXz9p%2Fuploads%2FyoYv2BdyWMLNlmkk6f0C%2Fimage.png?alt=media&#x26;token=70afa2e2-274e-4c8f-8353-3557c7b12002" alt="" width="563"><figcaption></figcaption></figure>

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 :&#x20;

<figure><img src="https://4219205392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fybn4btwQnvitOl9uXz9p%2Fuploads%2FjSlm1nLcc83HYYXiYGKX%2Fimage.png?alt=media&#x26;token=4ebb47a4-b3ea-4675-aa92-7ad4003f88de" alt="" width="563"><figcaption></figcaption></figure>

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 :&#x20;

<figure><img src="https://4219205392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fybn4btwQnvitOl9uXz9p%2Fuploads%2Fai3HbGKNPHHVNehlzRUC%2Fimage.png?alt=media&#x26;token=bffe6a08-1f87-4484-8859-89c4ae944faf" alt="" width="563"><figcaption></figcaption></figure>

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

<details>

<summary>🚩 FLAG</summary>

```
404CTF{70n_C0EuR_v4_7e_1Ach3R_C41uS}
```

</details>
