LA CONSOLE
// ton premier outil — déjà dans le navigateur
H.A.L. — La console est un interpréteur JavaScript.
Il tourne dans ton navigateur. Rien à installer.
Tout ce que tu y tapes s'exécute immédiatement sur la page.
Cette page contient des éléments faits pour être manipulés.
Utilise-les.
Il tourne dans ton navigateur. Rien à installer.
Tout ce que tu y tapes s'exécute immédiatement sur la page.
Cette page contient des éléments faits pour être manipulés.
Utilise-les.
ACCÈS : VISITEUR
// H.A.L. // message déverrouillé. flag{c0ns0l3_s33s_4ll}
// étape 01
OUVRIR LA CONSOLE
Appuie sur F12. Clique sur l'onglet Console.
Tu vois un champ de saisie avec un
Tu vois un champ de saisie avec un
> — c'est là que tu tapes.
Sur Mac : Cmd+Option+J ouvre directement la console.
// étape 02
MODIFIER LA PAGE
La page que tu vois est un objet JavaScript : document.
Tu peux modifier son apparence, son contenu, ses éléments — en direct.
Tu peux modifier son apparence, son contenu, ses éléments — en direct.
// changer l'apparence
document.body.style.background = '#ff0000'
document.body.style.color = '#ffffff'
// changer le titre de l'onglet
document.title = "tu contrôles ça"
// modifier le badge d'accès
document.getElementById('acces').textContent = 'ADMIN'
// cacher l'œil de HAL
document.getElementById('hal-eye').style.opacity = '0'
Recharge la page pour remettre les choses en place. Rien n'est permanent.
// étape 03
RÉVÉLER CE QUI EST CACHÉ
Certains éléments sont présents dans le code mais invisibles à l'écran.
display:none les masque — mais pas à la console.
display:none les masque — mais pas à la console.
// révéler un élément caché sur cette page
document.getElementById('secret').style.display = 'block'
// chercher le mot "secret" dans tout le code source
document.body.innerHTML.includes('secret')
C'est exactement comme ça qu'on résout certaines épreuves de ce CTF.
// étape 04
LES COOKIES
Un cookie est une information que le serveur stocke dans ton navigateur.
Le navigateur la renvoie à chaque requête. Le serveur te reconnaît grâce à ça.
Tu peux lire et modifier ces informations depuis la console.
Le navigateur la renvoie à chaque requête. Le serveur te reconnaît grâce à ça.
Tu peux lire et modifier ces informations depuis la console.
// lire les cookies de cette page
document.cookie
// créer un cookie
document.cookie = "hal_acces=visiteur"
// modifier sa valeur
document.cookie = "hal_acces=technicien"
document.cookie // vérifier
Le serveur reçoit ce cookie à chaque requête. S'il fait confiance à cette valeur sans vérifier... tu vois l'idée.
// étape 05
PARLER AU SERVEUR
fetch() envoie une requête HTTP depuis la console.
Tu peux interroger n'importe quelle route du serveur, lire la réponse, analyser les headers.
Tu peux interroger n'importe quelle route du serveur, lire la réponse, analyser les headers.
// voir ton score actuel
fetch('/score').then(r => r.json()).then(console.log)
// frapper une porte fermée
fetch('/hello').then(r => r.text()).then(console.log)
La deuxième requête va retourner une erreur. Lis-la. Elle dit exactement pourquoi et comment la résoudre.
// tu as trouvé un flag ?
"Ces outils ont des applications dans ce bâtiment.
La console ne ment pas — elle montre ce qui est vraiment là.
À toi de trouver ce qui mérite d'être trouvé."
— H.A.L. // système en ligne
La console ne ment pas — elle montre ce qui est vraiment là.
À toi de trouver ce qui mérite d'être trouvé."
— H.A.L. // système en ligne