Aller au contenu

HacklAPI⚓︎

Objectifs⚓︎

Objectif minimal⚓︎

Trouver le mot de passe de l'administrateur à l'adresse suivante https://html.brunache.ovh/hacklAPI.

Objectifs secondaires (améliorations)⚓︎

  1. (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⚓︎

  1. GET /hacklAPI/execute
  2. GET /hacklAPI/information
  3. GET /hacklAPI/secret

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