Level 5 (practice)
Challenge #1
Description
Appeler la fonction prettyHuman()
avec la chaîne de caractères "m5lccw"
en argument :
Résolution
Ici, deux filtres sont en place : les occurrences du caractère "c"
sont supprimées et le caractère " " (espace)
n'est également pas disponible. Le filtrage du caractère "c"
est gênant car la balise <script></script>
n'est pas utilisable :
Je contourne le filtrage du caractère "c"
en passant par un tag <svg>
ainsi que de l'encodage unicode suivant le contexte. Le "/"
me permet de contourner la suppression du caractère " " (espace)
:
Challenge #2
Description
Appeler la fonction prettyRobot()
avec la chaîne de caractères "elcmf4"
en argument mais cette fois sur l'attribut src
dans une balise <img />
:
Résolution
Il me faut plusieurs essais avant de déterminer les quelques filtres en place ici. Il semble que l’occurrence "on"
ne soit pas permise ainsi que l’occurrence "rr"
qui est transformée en "r"
. De plus le caractère "t"
ne semble pas être permis non plus :
Concernant le "on"
de onerror
je peux passer par le balise <script></<script>
. Pour avoir une seule occurrence de "r"
j'en renseigne un second, puis, finalement, j'utilise l'encodage unicode pour contourner le filtre sur le caractère "t"
:
Challenge #3
Description
Appeler la fonction politeSuperHero()
avec la chaîne de caractères "twxdfu"
en argument mais cette fois sur l'attribut href
dans une balise <a>
:
Résolution
Dans ce challenge, le caractère "u"
ainsi que le caractère "o"
sont filtrés :
Etant donné que le "u"
est filtré, il n'est pas possible d'utiliser l'encodage unicode. J'utilise donc les HTML entities pour le filtrage des caractères "o"
et "u"
. Concernant le "u"
présent dans la chaîne passée en argument on utilise la fonction String.fromCharCode()
. J'utilise également les HTML entities car je me rends compte que la chaîne "String"
est également filtrée :
Je me suis rendu compte seulement à posteriori , mais le filtrage sur le "o"
est contournable en le doublant (par exemple "oo"
).
Dernière mise à jour