Le 01/04/2022, j'ai eu le plaisir d'organiser l'événement Hacky'Nov. Dans le cadre de cet événement, j'ai réalisé 4 challenges. Il y avait deux challenges web, et deux challenges de programmation. Je ne détaillerai ici que les challenges web.
Pour plus d'informations sur l'événement : https://hackynov.fr
Lorsqu’on arrive sur la page on tombe sur un système de supervision d’avion. Dessus on peut indiquer le numéro du vol que l’on veut superviser.
On comprend vite avec le message indiqué qu’il faut faire planter le système de supervision. Pour cela on commence à tester les caractères qu’on peut utiliser.
On voit que les lettres ne sont pas reconnues et que quelques caractères spéciaux sont reconnus comme une attaque.
Cependant on voit que lorsqu’on met deux paranthèses il n’y a pas d’erreur.
En regardant les headers du site on voit que c’est une application flask qui tourne, donc du python.
On peut se dire que la "nouvelle technique pour évaluer la pertinance des numéros d’avion" est surement une fonction eval. On essaie donc d’injecter du code.
payload = time.sleep(10)
Voici la page sur laquelle nous tombons.
En traduisant et jouant un peu avec l’application on comprend que c’est un outil qui permet de reconnaitre les mots dans une image. L’outil permet de déterminer si le mot est réputé comme bon ou mauvais. Pour tester on prend un document word sur lequel on écrit :
test
test 1
test2
azertyuiop
En répétant l’opération on se rend compte que l’outil ne met jamais la même “notation” à notre mot. On peut considérer que c’est fait totalement aléatoirement. On utilise alors une liste de caractères spéciaux pour détecter un comportement anormal.
Exemple :
&
'
#
||
(
)
@
_
^
)
On voit que des caractères sont bien interprétés mais pourtant pas affichés. On voit aussi que seulement 4 lignes sont présentes.
On test alors de chainer un caractère spécial avec une commande pour voir le résultat. avec le payload suivant : &ls
Il nous manque plus qu’à affichier le résultat en envoyant une image contenant le texte &cat flag
.
Vous pouvez retrouver les sources de mes challenges ici : https://github.com/LOLOLEKIK/hackynov2022