Cybersecurity
  • Mon Blog
    • 🏠Home
    • 📦Archives
      • 2024
      • 2023
      • 2022
    • 📂Catégories
    • 📧A propos de moi
  • Mes projets
    • Livres / publications
      • Sécurité des applications web - Stratégies offensives et défensives
    • MyExpense
    • XSS Exploitation Tool
  • Mes Articles
    • 2025
      • Mars
        • Comment les requêtes préparées (prepared statement) protègent-elles contre les injections SQL ?
      • Janvier
        • XSS Exploitation Tool v0.7.0
    • 2024
      • Décembre
        • XSS Exploitation Tool v0.6.0
      • Septembre
        • MyExpense v1.4
      • Aout
        • XSS Exploitation Tool v0.5.0
        • Exploitation des injections SQL au sein de la clause ORDER BY
      • Juin
        • Parution de mon livre, Sécurité des applications web - Stratégies offensives et défensives
      • Mai
        • Dompurify 3.0.10 bypass - Confusion nodeName and CDATA
        • Dompurify 3.0.9 bypass - Node type confusion
      • Avril
        • Bypass de validation d'URL et embedded credentials côté front
      • Mars
        • MyExpense v1.3
    • 2023
      • Mai
        • MyExpense v1.2
      • Mars
        • MyExpense v1.1
        • Fonctionnement de l'entête X-Content-Type-Options - Contournement de CSP
      • Février
        • Fonctionnement de l'entête HTTP Strict Transport Security Header (HSTS)
    • 2022
      • Décembre
        • Les injections CSS - Règle @import
        • Les injections CSS - Scroll-to-Text Fragment
      • Novembre
        • Les injections CSS - Attribute Selector
        • Les injections CSS - Règle @font-face et descripteur unicode
      • Octobre
        • XSS Exploitation Tool v0.4.0
      • Septembre
        • Cross-Site Scripting (XSS) et schéma d'URI javascript
      • Juillet
        • SAST - PHP CodeSniffer orienté sécurité dans Visual Studio (sous Windows)
        • SAST - PHP CodeSniffer orienté sécurité dans Visual Studio (sous Debian)
        • Est-il possible de contourner la fonction PHP htmlspecialchars() ?
  • Common Vulnerabilities and Exposures (CVE)
    • 2024
      • CVE-2024-29415
    • 2023
      • CVE-2023-42282
    • 2022
      • CVE-2022-33910
      • CVE-2022-32444
      • CVE-2022-32442
    • 2020
      • CVE-2020-26311
  • Livres
    • 2023
      • Attacking and Exploiting Modern Web Applications
      • DevSecOps - Développez et administrez vos services en toute sécurité
    • 2022
      • Hacking APIs - Breaking Web Application Programming Interfaces
    • 2018
      • Practical Web Penetration Testing
      • Web Hacking 101: How to Make Money Hacking Ethically
  • Walkthroughs
    • Capture The Flag
      • Hack.lu CTF 2019
        • Nucular Power Plant
      • TAMUctf 2019
        • 1337 Secur1ty
        • Bird Box Challenge
        • Science!
    • Deliberately Vulnerable
      • CORS vulnerable Lab
        • Application Trust Arbritrary Origin
        • Application has bad "regex" Implementation to check Trusted Origin
        • Application Trust "null" Origin
      • Damn Vulnerable Web Application (DVWA)
        • Brute Force
          • Niveau "Low"
          • Niveau "Medium"
          • Niveau "High"
        • Command Injection
          • Niveau "Low"
          • Niveau "Medium"
          • Niveau "High"
        • CSRF
          • Niveau "Low"
          • Niveau "Medium"
          • Niveau "High"
        • File Inclusion
          • Niveau "Low"
          • Niveau "Medium"
          • Niveau "High"
        • File Upload
          • Niveau "Low"
          • Niveau "Medium"
          • Niveau "High"
        • Insecure CAPTCHA
          • Niveau "Low"
          • Niveau "Medium"
          • Niveau "High"
        • SQL Injection
          • Niveau "Low"
          • Niveau "Medium"
          • Niveau "High"
        • SQL Injection (Blind)
          • Niveau "Low"
          • Niveau "Medium"
          • Niveau "High"
        • Weak Session IDs
          • Niveau "Low"
          • Niveau "Medium"
          • Niveau "High"
        • XSS (DOM)
          • Niveau "Low"
          • Niveau "Medium"
          • Niveau "High"
        • XSS (Reflected)
          • Niveau "Low"
          • Niveau "Medium"
          • Niveau "High"
        • XSS (Stored)
          • Niveau "Low"
          • Niveau "Medium"
          • Niveau "High"
        • CSP Bypass
          • Niveau "Low"
          • Niveau "Medium"
          • Niveau "High"
        • Javascript
          • Niveau "Low"
          • Niveau "Medium"
          • Niveau "High"
      • Unescape() room
        • Level 1 (practice)
        • Level 2 (practice)
        • Level 3 (practice)
        • Level 4 (practice)
        • Level 5 (practice)
        • Level 6 (practice)
        • Level 7 (practice)
        • Level 8 (practice)
        • Level 9 (practice)
        • Level 10 (practice)
      • VulnHub
        • GoatseLinux: 1
        • Hackademic: RTB1
        • Hackademic: RTB2
        • Holynix: v1
        • Holynix: v2
        • Kioptrix: Level 1 (#1)
        • Kioptrix: Level 1.1 (#2)
        • Kioptrix: Level 1.2 (#3)
        • Kioptrix: Level 1.3 (#4)
        • LAMPSecurity: CTF4
        • LAMPSecurity: CTF5
        • LAMPSecurity: CTF6
        • Metasploitable: 1
        • pWnOS 1.0
        • pWnOS 2.0 (Pre-Release)
      • XSS Vulnerability Challenges
        • xss1
        • xss2
        • xss3
        • xss4
        • xss5
        • xxs6
        • xss7
        • xss8
Propulsé par GitBook
Sur cette page
  • Challenge #1
  • Description
  • Résolution
  • Challenge #2
  • Description
  • Résolution
  • Challenge #3
  • Description
  • Résolution
  • Challenge #4
  • Description
  • Résolution
  1. Walkthroughs
  2. Deliberately Vulnerable
  3. Unescape() room

Level 9 (practice)

PrécédentLevel 8 (practice)SuivantLevel 10 (practice)

Dernière mise à jour il y a 2 ans

Challenge #1

Description

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

Résolution

Le caractère "8" est ici filtré et la chaîne est inversée :

Lorsque je tente seulement d'inverser la chaîne et de gérer le caractère filtré avec une opération mathématique, plus rien ne s'affiche :

C'est plutôt difficile de trouver exactement les filtres en place ici, mais la longueur de la payload semble jouer un rôle. De plus, en allant pas à pas j'ai du utiliser la méthode toLowerCase() pour les caractères "z" et "a" ce qui m'a permis de valider ce challenge :

Challenge #2

Description

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

Résolution

Challenge #3

Description

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

Résolution

J'ai bien tenté ma chance en renseignant ma payload sans tenir compte des filtres et de faire un état des lieux après mais c'est difficile quand rien ne s'affiche en retour :

Challenge #4

Description

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

Résolution

Je tente ici de fermer la première balise <script></script> afin de ne pas avoir à m'occuper du dernier "};". La parenthèse ouvrante "(" est filtré ainsi que le caractère "8" et "h" de la chaîne en argument :

Etant donné qu'il me faut contourner le filtre sur la parenthèse ouvrante j'utilise la balise <svg> afin de pouvoir utiliser son équivalent HTML entities. Le caractère "h", qui est également filtré, possède un "8" dans son unicode, je passe alors également par son équivalent HTML entities :

J'ai à priori de la chance car seul le caractère "4" semble être filtré. La chaîne est inversée, mais je commence à avoir l'habitude de cela :

Une opération mathématique et un reverse après (hmm plutôt light pour un level 9 non ? ) :

Alors ici j'ai expérimenté pas mal de choses ici. Dans un premier temps, le "H" ou "h" semblent être filtrés mais pas forcément au même endroit. Puis vient le tour de s'apercevoir du filtre sur l'occurrence "//" (je m'en servais pour commenter la fin de ligne). Il y a sans doute plus simple et je suis loin d'être sûr de moi quant aux filtres réellement en place, mais le challenge est tout de même validé :

😛
😁
😁