> For the complete documentation index, see [llms.txt](https://sharpforce.gitbook.io/cybersecurity/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sharpforce.gitbook.io/cybersecurity/walkthroughs/deliberately-vulnerable/unescape-room/level-7-practice.md).

# Level 7 (practice)

## Challenge #1

### Description

Appeler la fonction `tallHuman()` avec la chaîne de caractères `"9ultl0bs"` en argument :

![](/files/-LsLg1ij1fMY7UPPsSI3)

### Résolution

Dans cet exercice, la chaîne semble être inversée et un filtrage est effectué sur le caractère `"t"` :&#x20;

![](/files/-LsLgabIT78r57ApszeA)

L'idée va donc être de gérer dans un premier temps le filtrage sur le caractère `"t"` puis d'effectuer un inversement sur notre chaîne. Concernant le filtrage j'utilise le `"T"` à la place du `"t"` pour pouvoir écrire le mot clé `"script"`. Le filtre du caractère dans le nom de la fonction ainsi que dans la chaîne passée en paramètre est contournable grâce à l'encodage unicode :

![](/files/-LsLhwOv-rpzRM6fukVo)

## Challenge #2

### Description

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

![](/files/-LsLvSAqmY0GBPMm_-bp)

### Résolution

Seuls les caractères `" " (espace)` , `"6"` et `"0"` sont filtrés, je ne rencontre donc pas de réel difficulté ici :

![](/files/-LsLwG3-CT3-Mk4FbWXK)

Cela ne sert à rien de tenter de contourner le filtre sur le caractère `" " (espace)`, il sera ajouté automatiquement. J'utilise les opérations mathématiques afin de retrouver le `"6"` et le  `"0"` :

![](/files/-LsLwg1k0xLzww1LXwA6)

## Challenge #3

### Description

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

![](/files/-LsLtEXl63gxDE1iJym3)

### Résolution

Plutôt facile pour celle-ci : la chaîne est inversée et seul le caractère `"i"` est filtré :

![](/files/-LsLxDHhDpT1Y52WHMpm)

J'utilise donc le contournement par le jeu de majuscule/minuscule et l'encodage unicode avant d'inverser la payload :

![](/files/-LsLvDp4Qc2Zk3n09oU4)

## Challenge #4

### Description

Appeler la fonction `fancySuperHero()` avec la chaîne de caractères `"1vose8qg"` en argument mais cette fois sur la valeur de la propriété `background-color` du sélecteur `banner` :

![](/files/-LsLxW2hQHyXZDwQ6tX6)

### Résolution

Dans cet exercice, le caractère `"p"` ainsi que le caractère `"\"` sont filtrés :

![](/files/-LsLyA5fwbvUPEK53v3N)

Je contourne le filtrage sur `"p"` dans les balises en utilisant `"P"`. Pour le caractère `"p"` de la chaîne passée en argument, il n'est pas possible d'utiliser l'encodage unicode car le caractère `"\"` est filtré. Je passe alors par un `toLowerCase()` :

![](/files/-LsLybosvt-uHBdjguhW)

## Challenge #5

### Description

Appeler la fonction `braveFunction()` avec la chaîne de caractères `"kacwpkiy"` en argument mais cette fois sur l'attribut `value` du tag `<input/>` :

![](/files/-LsLpAdofVjkUNvieP2D)

### Résolution

Ici la chaîne est inversée. De plus, les caractères `"F"`, `"("` et `" "(espace)` sont filtrés :

![](/files/-LsLsU1r8Zokg1xbSOsc)

Je remplace les caractères par la version HTML entities ou unicode selon le cas, puis, j'inverse la chaîne :

![](/files/-LsLsjpQuUbHT0JTGEId)

## Challenge #6

### Description

Appeler la fonction `niceSuperHero()` avec la chaîne de caractères `"3hbw9yod"` en argument au sein de la valeur d'une variable Javascript :

![](/files/-LsLzJNIqCiYUy6_JzFA)

### Résolution

Un filtrage est effectué sur le caractère `"c"` (ainsi que sur `"C"`) ainsi que sur le caractère `"3"` . Finalement la chaîne est également inversée :

![](/files/-LsM18llmNAYKeUnR_N8)

Je suis tenté d'appeler directement la fonction `niceSuperHero()` , mais étant donné que le `"c"` est filtré et son code unicode est `\u0063`et qu'il contient un `"3"` ...  Je passe alors par un encodage base64 et un `toLowerCase()` :

![](/files/-LsM4ODrOMB1eZIigghJ)

## Challenge #7

### Description

Appeler la fonction `braveHuman()` avec la chaîne de caractères `"we9o3qci"` en arugment mais cette fois en valeur d'une donnée JSON stockée dans la variable `window.appData` :

![](/files/-LsM5G-L4pNtI3dMmu2p)

### Résolution

Pas de difficulté ici puisque seul le caractère `"9"` semble être filtré :

![](/files/-LsM64wej2fc7TdlHTdr)

Soit en utilisant une opération mathématique :

![](/files/-LsM6EuPbu7sBO14qv5K)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://sharpforce.gitbook.io/cybersecurity/walkthroughs/deliberately-vulnerable/unescape-room/level-7-practice.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
