Parseur Farceur
Dernière mise à jour
Cet article vous a-t-il été utile ?
Dernière mise à jour
Cet article vous a-t-il été utile ?
Flag: CYBN{Wh@t_A_cRAzy_PaRS3r}
Ce challenge tourne sur un docker et n'est pas disponible
Il fallait passer par une des fonctions de Sympy, ici je suis passé par Lambda
. Elle permet d'appliquer une fonction à un Symbol. On peut donc détourner le Symbol eécuter du code arbitraire :
De là, on utilise la même démarche que dans les pyjail pour remonter les objets jusqu'à importer les modules que l'on veut avec le module BuiltinImporter
.
On commence par chercher la classe object
en local :
Maintenant qu'on a le début de notre payload qui permet d'obtenir la classe object
, on peut retourner sur le site et l'envoyer pour récupérer toutes les classes définies (puisqu'elles héritent toutes d'elle) :
On cherche dans ce grand tableau notre classe BuiltinImporter
:
De là, on peut charger n'importe quelle librairie :
Le flag est dans les variables d'environnement.
Ici, je vais détailler comment on arrive au payload final pour comprendre le principe, mais on peut juste tout fait et l'adapter.