Flask

Flag: StarHack{SSTI?NOOOOOOOOOOOO}

Challenge

circle-info

Description


J'apprends Flask, ils disent que c'est facile, mais il faut bien le gérer, il y a beaucoup d'injections. Comment je m'en sors jusqu'à présent ? Y a-t-il des injections ?

Chemin du flag: /app/flag.txt

LINKarrow-up-right

circle-exclamation

Solution

Une fois avoir créé un compte et s'être connecté, on remarque que notre page affiche Hello, Welcome! et que dans l'url, on a ?welcome_message=Welcome!.

Si on change le message, il s'affiche bien sur notre page. De là, on pense tout de suite à une SSTI Jinja2 grâce au titre du challenge.

L'objectif est de lire le fichier /app/flag.txt. Pour ça on peut s'appuyer sur HackTricksarrow-up-right qui nous donne le payload suivant pour exécuter une commande (ici, lire un fichier) :

{{''.__class__.mro()[1].__subclasses__()[396]('cat flag.txt',shell=True,stdout=-1).communicate()[0].strip()}}

Il faut juste adapter le payload pour trouver le bon index pour __subclasses__, pour ça on va envoyer dans un premier temps

{{''.__class__.mro()[1].__subclasses__()}}

Maintenant, on parse le résultat en python pour trouver l'index

On trouve 351, voici le payload mis à jour :

Mis à jour