Level 3 (practice)

Challenge #1

Description

Appeler la fonction prettyHuman() avec la chaîne de caractères "798" en argument :

Résolution

Il s'agit sensiblement du même filtrage que le challenge du niveau 2, à savoir un filtre sur la lettre "t" :

De la même manière, je contourne le filtrage en place en utilisant le caractère filtré en majuscule ou son code unicode suivant le contexte :

Challenge #2

Description

Appeler la fonction kindHuman() avec la chaîne de caractères "079" en argument mais cette fois sur l'attribut src dans une balise <img /> :

Résolution

Le filtrage s'effectue ici sur le caractère " " (espace) ainsi que sur le caractère "u" :

Le filtrage sur le caractère "u" est un peu embêtant car il m'empêche d'utiliser la notation unicode. Je change donc de technique et passe via un String.fromCharCode() conjointement avec la fonction eval() :

Challenge #3

Description

Appeler la fonction kindSuperHero() avec la chaîne de caractères "929" en argument mais cette fois sur l'attribut href dans une balise <a> :

Résolution

Au sein d'un attribut href il est possible d'utiliser la syntaxe javascript:code (par exemple href="javascript:alert(1)") afin d'exploiter une XSS. Dans ce cas, seul le caractère "9", présent dans le paramètre de la fonction, semble être filtré :

Grâce à la concaténation (et à la conversion implicite), il est possible de représenter "9" par une autre opération mathématique :

Ne pas oublier de passer par la vue DOM (View DOM) et de cliquer sur le lien afin d'exécuter la payload :

Dernière mise à jour