Outils d'utilisateurs

Outils du Site


29c3:misc:jsux

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

29c3:misc:jsux [2012/12/30 13:54]
mooh
29c3:misc:jsux [2017/04/09 15:33] (Version actuelle)
Ligne 10: Ligne 10:
 On ouvre le fichier html et on essaie de voir ce qui se passe On ouvre le fichier html et on essaie de voir ce qui se passe
  
-{{:29c3:misc:screen_shot_2012-12-30_at_1.19.18_pm.png?200|}}+{{:29c3:misc:screen_shot_2012-12-30_at_1.19.18_pm.png?400|}}
  
 On remarque que les champs de saisie ont des [[http://www.whatwg.org/specs/web-apps/current-work/multipage/common-input-element-attributes.html#the-pattern-attribute|patterns]] qui verifient que les donnees entrees ont le bon format: On remarque que les champs de saisie ont des [[http://www.whatwg.org/specs/web-apps/current-work/multipage/common-input-element-attributes.html#the-pattern-attribute|patterns]] qui verifient que les donnees entrees ont le bon format:
  
 pour le username: <code html> pattern="^(?:[\uFFFE\uFEFF\uFFFF]|[\u202A-\u202E])+$" maxlength="3" </code> pour le username: <code html> pattern="^(?:[\uFFFE\uFEFF\uFFFF]|[\u202A-\u202E])+$" maxlength="3" </code>
 +ce qui correspond a des caracteres [[http://www.charbase.com/fffe-unicode-invalid-character|bizarres]]
 +
 pour le pass: <code html> pattern="^\d+$" maxlength="6" </code> pour le pass: <code html> pattern="^\d+$" maxlength="6" </code>
 +
  
 En regardant le code source, on voit aussi des commentaires (interessant pour la suite) En regardant le code source, on voit aussi des commentaires (interessant pour la suite)
Ligne 88: Ligne 91:
 </code> </code>
 On va donc enlever les commentaires et cela va definir window.location.i On va donc enlever les commentaires et cela va definir window.location.i
 +
 +Maintenant on est dans la boucle, il ne reste plus que ce test
 +<code html>
 +if (!~ (d - 7) === !! window && 
 +document.getElementsByTagName("input")[0].value === "admin" && 
 +c(document.getElementsByTagName("input")[1].value, 5e3) == "6aa78af37242c3c468f519ec0d686a0e" /*\d{1,4}*/ )
 +</code>
 +
 +Le !~ (d - 7) === !! window est True car d = 6 (de la boucle), ensuite le user doit etre admin et la encore une fois la fonction c est appellee sur le pass. On va bruteforcer le pass (il est de la forme **pattern="^\d+$"** ie un nombre et on trouve pass = 593
 +
 +On teste tout ca (en enlevant les patterns et length pour le username pour qu'il accepte "admin") et on obtient une belle notification avec le flag{{:29c3:misc:screen_shot_2012-12-30_at_2.07.36_pm.png?400|}}
 +
  
 ==== Source ==== ==== Source ====
29c3/misc/jsux.1356872073.txt.gz · Dernière modification: 2017/04/09 15:33 (modification externe)