Unbreakable
Dernière mise à jour
Cet article vous a-t-il été utile ?
Dernière mise à jour
Cet article vous a-t-il été utile ?
Catégorie: Misc Difficulté: easy Flag: HTB{3v4l_0r_3vuln??}
Think you can escape my grasp? Challenge accepted! I dare you to try and break free, but beware, it won't be easy. I'm ready for whatever tricks you have up your sleeve!
Ce challenge tourne sur un docker, disponible sur
L’input que l’on envoie termine dans un eval
à la ligne 84 : eval(ans + '()')
Mais nous n’avons pas le droit d’utiliser n’importe lequel des mots contenu dans la blacklist.
Comme le eval termine forcément par ()
, il faut penser que notre input doit se terminer par des parenthèse mais sans les mettre.
Le payload est donc le suivant : **print(open('flag.txt').read())or**
Le or
permet de tester si le terme de gauche est None
, alors le terme de droite est renvoyé. Le terme de droite sera alors un tuple vide ()
et ne provoquera aucune erreur tout en interprétant la fonction print.