[ESAIP CTF 2022] - Terminal Weather (479)
Terminal Weather
Nous allons aujourd’hui voir le dernier challenge en pwn de l’ESAIP CTF.
Nous n’avions pas de binaire simplement un remote.
Lorsque nous nous connections nous avions cela :
1 |
|
Introduction
Ce challenge est celui qui m’a prit le plus de temps (2 heures). Pourtant le principe est simple, on va y venir.
Nous avons donc un menu avec des options tels que :
1 |
|
Nous pouvons donc enlever les éventuelles technique de heap traditionnelles (Uaf & Double Free).
Nous allons alors tester le changement de ville pour voir ce qu’il se passe :
1 |
|
Nous allons tester d’avoir le temps de cette ville :
1 |
|
Exploitation
On comprends donc qu’il faudrait passer comme nom de ville notre payload. Au bout de plusieurs essaie, je teste ça :
1 |
|
Nous avons réussi à avoir une erreur. C’est à ce moment là que j’ai perdu énormement de temps.
Je pensais pouvoir refermer la balise et ensuite injecter une commande.
Et j’ai passé plus d’une heure sur ça.
Ensuite j’arrive à avoir une erreur qui me donne un compte Twitter :
1 |
|
En checkant son twitter, il s’agit du créateur de l’API pour le temps. Pour intéragir avec son API, nous devons faire un :
1 |
|
On comprend donc à ce moment là que c’est le cas avec notre programme.
Command Execution
J’ai essayé les commandes injections telles que :
1 |
|
Certain caractère étaient filtrés.
Puis j’ai trouvé cela :
1 |
|
Nous avons donc réussi à injecter une comande qui a été exécuté par le serveur.
J’ai donc fais un ls
pour voir ce qu’on avait :
1 |
|
Lancer des commandes par le nom de la ville, est assez long. Il nous faut un shell.
GET A SHELL
Pour cette dernière partie, nous allons donc tenter d’obtenir un reverse shell.
1 |
|
Nous avons alors une connection sur le VPS :
1 |
|
Ce challenge était super cool, j’ai pu passé une bonne partie de ce challenge à chercher avec hashp4.