Outils d'utilisateurs

Outils du Site


ndh2k12_public:web:workerz

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

ndh2k12_public:web:workerz [2012/07/01 22:27]
Spl3en
ndh2k12_public:web:workerz [2017/04/09 15:33] (Version actuelle)
Ligne 1: Ligne 1:
-==== Description de l'épreuve ====+=======  Description de l'épreuve  ======= 
 Lors du lancement de l'épreuve, on se confronte à une page nous demandant d'entrer un mot de passe de 16 caractères. Lors du lancement de l'épreuve, on se confronte à une page nous demandant d'entrer un mot de passe de 16 caractères.
  
 {{http://i.imgur.com/FUPLN.png}} {{http://i.imgur.com/FUPLN.png}}
 +
 +===== Solution 1 =====
  
 Après étude de la source, l'épreuve se décompose en 3 parties :  Après étude de la source, l'épreuve se décompose en 3 parties : 
Ligne 73: Ligne 76:
 </code> </code>
  
-Le script ci dessus inclue le script 'p.js', qui est en réalité un interpréteur Python en Javascript !+Le script ci dessus inclut le script 'p.js', qui est en réalité un interpréteur Python en Javascript !
  
 La résolution de cette partie reste similaire à celle précédente, simplement dans un langage différent, qui va ensuite être interprété par Javascript. La résolution de cette partie reste similaire à celle précédente, simplement dans un langage différent, qui va ensuite être interprété par Javascript.
Ligne 105: Ligne 108:
 </code> </code>
  
-Après l'interpréteur Python en Javascript, voici [[https://github.com/kripken/emscripten/wiki|Emscripten]], qui permet de compiler du code C en Javascript qui sera interprétée par une VM.+Après l'interpréteur Python en Javascript, voici [[https://github.com/kripken/emscripten/wiki|Emscripten]], qui permet d'interprêter du bytecode LLVM (généré à partir d'un code C) et le transformer en Javascript.
  
 Voici la fonction chargée de la vérification de nos derniers caractères : Voici la fonction chargée de la vérification de nos derniers caractères :
Ligne 397: Ligne 400:
 </code> </code>
    
-On résoud ça en faisant x = (57 << 9 / 666).+On résoud ça en faisant <code>x = round(57 << 9 / 666)</code>
  
 On obtient : x = 44, soit x = ',' On obtient : x = 44, soit x = ','
Ligne 407: Ligne 410:
  
  
-Et un flag de plus, avec un prime un poney-megusta !+Et un flag de plus, avec en prime un joli poney-megusta ! :)
  
 {{http://i.imgur.com/JNeHj.png}} {{http://i.imgur.com/JNeHj.png}}
 +
 +
 +===== Solution 2 =====
 +
 +=== Pré requis ===
 +
 +Avoir récupéré en local les js + les images et le html (Avec par exemple un wget -r)
 +
 +=== Investigation ===
 +
 +On grep « D E N I ED » car il s’affiche quand le mot de passe est pas bon.
 +Le fichier Kode.js sort du grep.
 +Un petit coup d’œil et on obtient le code suivant: 
 +
 +{{http://i.imgur.com/vkaWt.png}}
 +
 +Il suffit alors d’ajouter la fonction pwnie(pass)  dans le else comment ceci:
 +
 +{{http://i.imgur.com/ba5V8.png}}
 +
 +
 +Et c’est gagné !
 +
  
ndh2k12_public/web/workerz.1341174478.txt.gz · Dernière modification: 2017/04/09 15:33 (modification externe)