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.
Last updated
Was this helpful?