Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
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 ==== |