Co(mpressed)okies
Flag: CYBN{Wh4t_4_w31rd_w4y_t0_st0r3_d4t4}
Challenge
Description
J'ai entendu dire que sérialiser ses objets et les renvoyer au client pouvait être dangereux. Du coup, je suis en train d'expérimenter une nouvelle façon de stocker des données !
J'ai tellement confiance en ce système que je me suis permis de cacher une partie du flag directement sur la machine 😎
Ce challenge tourne sur un docker et n'est pas disponible
Solution
Etape 1 - Connexion à l'admin
On commence par créer un compte et s'enregistrer, puis on se connecte. Ensuite, on peut récupérer notre cookie :

Sur CyberChef, on peut voir que c'est un fichier zip qui est encodé en base64 :

Le fichier à l'intérieur est user.py et ressemble à ça :
Il faut changer la valeur user en admin à la ligne 10. En python ça donne :
On met ce cookie dans notre navigateur et on va sur la page Administration :
Etape 2 - Remote Code Execution
Sur la page d'Administration, on a le code du serveur. En le décortiquant, on comprend que le fichier user.py doit faire 22 lignes et que l'on peut modifier uniquement les lignes 7 à 10 (si on commence à compter à 1).
On peut alors injection dans la ligne du nickname pour obtenir le résultat de notre commande. Pour obtenir le flag, il faut lister les variables d'environnement.

Mis à jour