HacklAPI⚓︎
Objectifs⚓︎
Objectif minimal⚓︎
Trouver le mot de passe de l'administrateur à l'adresse suivante https://html.brunache.ovh/hacklAPI.
Objectifs secondaires (améliorations)⚓︎
- (indépendant) Mettre en place un site web dynamique avec le module
flask
(fonctionnant localement comme en TP) avec une page de connexion et une page d'accueil.
Rendu technique⚓︎
Le projet devra comporter à minima 1 fichier python ayant servi à hacker le mot de passe.
Quelques informations (très) utiles⚓︎
- Bien relire et comprendre le TP2 sur les requêtes. Il utilise le module
requests
de python. - Bien relire et comprendre le TP1 sur les pages dynamiques (pour l'objectif secondaire numéro 2)
-
Le site en question a quelques faiblesses et il va falloir s'en servir:
- il a une API que vous allez pouvoir utiliser, sa documentation est à la fin de cette page
-
un bout de code du code source du serveur a fuité sur le web :
users = [ ("coucou@pouet.zut", "password123"), ("user@domain.com", "mypassword") ] @app.route('/hacklAPI') def hackAPI(): return render_template('hacklAPI.html') @app.route('/hacklAPI/login', methods=['POST']) def loginAPI(): username = request.form['login'] password = request.form['password'] if (username, password) in users: return render_template('success.html') else: return render_template('hacklAPI.html', message="Identifiants incorrects")
Documentation de l'API hacklAPI⚓︎
Cette API expose plusieurs endpoints permettant d’exécuter une commande Python filtrée, de consulter les utilisateurs stockés en base de données et de récupérer des informations statiques.
Table des Matières⚓︎
GET /hacklAPI/execute⚓︎
Exécute une commande Python récupérée depuis la requête.
-
URL
/hacklAPI/execute -
Méthode
GET -
Paramètres de Requête
-
command : la commande Python à exécuter (string)
-
Exemple
GET /hacklAPI/execute?command=print("Hello NSI") -
Réponse
Retourne un objet JSON contenant :
{ "result": "Command executed: print(\"Hello NSI\")\nNone\nPrinted output:\nHello NSI" }
GET /hacklAPI/information⚓︎
Renvoie une information importante au format JSON.
-
URL
/hacklAPI/information -
Méthode
GET
GET /hacklAPI/secret⚓︎
Renvoie un secret au format JSON.
-
URL
/hacklAPI/secret -
Méthode
GET