Co(mpressed)okies

Flag: CYBN{Wh4t_4_w31rd_w4y_t0_st0r3_d4t4}

Challenge

circle-info

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 😎

circle-exclamation

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 CyberChefarrow-up-right, 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