Outils d'utilisateurs

Outils du Site


ctf_thc_toulouse_hacking_convention

Différences

Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue

ctf_thc_toulouse_hacking_convention [2018/04/09 23:46]
M0N5T3R créée
ctf_thc_toulouse_hacking_convention [2018/04/10 00:03] (Version actuelle)
M0N5T3R
Ligne 1: Ligne 1:
 +
  
   * web 1 (202pts) : le writeup de BFF ici : https://github.com/Beers4Flags/writeups/tree/master/2018/Thcon/Web/200   * web 1 (202pts) : le writeup de BFF ici : https://github.com/Beers4Flags/writeups/tree/master/2018/Thcon/Web/200
Ligne 9: Ligne 10:
   * web 2 : une page web d’encyclopédie de cactus avec recherche. Personne n'a résolu ce chall durant le ctf. On l'a tourné dans tous les sens, mais pas moyen d'en sortir quoi que ce soit. C'était apparemment une sqli via un cookie encodé en b64 dont le contenu d'origine était ".;.;.". Mais on a beau avoir try hard ce cookie, se doutant bien qu'il y avait quelque chose rien n'est ressortit. En discutant avec d'autres team, plusieurs ont fait pareil sans succès. Bref, l'auteur du chall nous a dit qu'il diffuserait un write up, je suis curieux de la lire car ce cactus m'a fait mal au c..   * web 2 : une page web d’encyclopédie de cactus avec recherche. Personne n'a résolu ce chall durant le ctf. On l'a tourné dans tous les sens, mais pas moyen d'en sortir quoi que ce soit. C'était apparemment une sqli via un cookie encodé en b64 dont le contenu d'origine était ".;.;.". Mais on a beau avoir try hard ce cookie, se doutant bien qu'il y avait quelque chose rien n'est ressortit. En discutant avec d'autres team, plusieurs ont fait pareil sans succès. Bref, l'auteur du chall nous a dit qu'il diffuserait un write up, je suis curieux de la lire car ce cactus m'a fait mal au c..
   * web 3 : le writeup de BFF ici : https://github.com/Beers4Flags/writeups/tree/master/2018/Thcon/Web/300   * web 3 : le writeup de BFF ici : https://github.com/Beers4Flags/writeups/tree/master/2018/Thcon/Web/300
-    Honnêtement, on avait tout sur ce chall, sauf que le répo git récupéré via gitTools était corrompu. Du coup pas moyen de pouvoir récupérer les fichiers. +Honnêtement, on avait tout sur ce chall, sauf que le répo git récupéré via gitTools était corrompu. Du coup pas moyen de pouvoir récupérer les fichiers. 
-    On a passé du temps a essayer de réparer le répo sans succès. Alors qu'au final on a apprit après que cela aurait dut fonctionner nickel. Bref leçon à retenir, des fois aller poser une question aux orgas, ça fait gagner du temps et des points :/+On a passé du temps a essayer de réparer le répo sans succès. Alors qu'au final on a apprit après que cela aurait dut fonctionner nickel. Bref leçon à retenir, des fois aller poser une question aux orgas, ça fait gagner du temps et des points :/
          
          
Ligne 16: Ligne 17:
   * On arrive d'abord sur une page web toute simple avec pas grand chose à l'intérieur, juste un formulaire RESTRICTED ACCESS avec un champ à submit.   * On arrive d'abord sur une page web toute simple avec pas grand chose à l'intérieur, juste un formulaire RESTRICTED ACCESS avec un champ à submit.
  
-[[https://forum.zenk-security.com/attachment.php?thumbnail=685]]+{{ :forensic.png?nolink&200 |}}
  
   * On découvre un répo .git (présence du fichier .git/HEAD)   * On découvre un répo .git (présence du fichier .git/HEAD)
Ligne 23: Ligne 24:
   * le répo pour récupérer les sources   * le répo pour récupérer les sources
   * Config.py   * Config.py
-URL = 'https://vault:8200' 
-CERT = './cert/client.crt' 
-KEY = './cert/client.key' 
-CA = './cert/vault_ca.crt' 
-  *  code_check.py 
-from flask import Flask, request, render_template 
-import hvac 
  
-app = Flask(__name__) +    'https://vault:8200
-app.config.from_object('config') +    CERT './cert/client.crt' 
-vault hvac.Client(url=app.config['URL'], cert=(app.config['CERT'], app.config['KEY']), verify=app.config['CA'])+    KEY = './cert/client.key' 
 +    CA = './cert/vault_ca.crt'
  
 +  *  code_check.py
  
-# @app.route('/') + from flask import Flask, request, render_template 
-def get_index(): + import hvac 
-    return app.send_static_file('index.html') + app = Flask(__name__) 
- + app.config.from_object('config') 
- + vault = hvac.Client(url=app.config['URL'], cert=(app.config['CERT'], app.config['KEY']), verify=app.config['CA']) 
-# @app.route('/code_check', methods=['POST']) + # @app.route('/') 
-def check_code(): + def get_index(): 
-    user_code = "code"  #request.form.get('code') + return app.send_static_file('index.html') 
-    vault.auth_tls() + # @app.route('/code_check', methods=['POST']) 
-    value = vault.read('secret/auth') + def check_code(): 
- + user_code = "code"  #request.form.get('code') 
-    if value is not None and user_code is not None: + vault.auth_tls() 
-        if str(value['data']['code']) == str(user_code): + value = vault.read('secret/auth') 
-            value = vault.read('secret/vulnerability') + if value is not None and user_code is not None: 
-            if value is not None: + if str(value['data']['code']) == str(user_code): 
-                return render_template('success.html', content=value['data']['vuln']), 200, {'ContentType': 'text/html'} + value = vault.read('secret/vulnerability') 
-    return app.send_static_file('error.html'), 401, {'ContentType': 'text/html'} + if value is not None: 
 + return render_template('success.html', content=value['data']['vuln']), 200, {'ContentType': 'text/html'} 
 + return app.send_static_file('error.html'), 401, {'ContentType': 'text/html'}  
 +    if __name__ == '__main__': 
 +        check_code()
  
-if __name__ == '__main__': 
-    check_code() 
   * Il s'agit donc d'un formulaire d'authentification en python utilisant vault   * Il s'agit donc d'un formulaire d'authentification en python utilisant vault
   * Les logs du git nous apprennent qu'une ancienne version a existé sous mysql. Et au passage on récupère les credentials mysql dans les sources.   * Les logs du git nous apprennent qu'une ancienne version a existé sous mysql. Et au passage on récupère les credentials mysql dans les sources.
   * Test du 3306, puis Nmap pour trouver un mysql open sur un autre port, et au final dirb nous a trouvé un folder phpMyAdmin   * Test du 3306, puis Nmap pour trouver un mysql open sur un autre port, et au final dirb nous a trouvé un folder phpMyAdmin
-  * Connection au phpMyAdmin et à partir de là on récupère les fichiers sur le serveur via un  +  * Connection au phpMyAdmin et à partir de là on récupère les fichiers sur le serveur via un     
-select LOAD_FILE('/etc/passwd')+    select LOAD_FILE('/etc/passwd') 
   *  /etc/nginx/nginx.conf pour trouver le full path web   *  /etc/nginx/nginx.conf pour trouver le full path web
   * récupération du contenu du dossier cert/ afin de récup la clé, le certificat et l'autorité de certification   * récupération du contenu du dossier cert/ afin de récup la clé, le certificat et l'autorité de certification
ctf_thc_toulouse_hacking_convention.1523310373.txt.gz · Dernière modification: 2018/04/09 23:46 par M0N5T3R