← retour au fanzine
OUTILS // 01
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.
ACCÈS : VISITEUR
// H.A.L. // message déverrouillé. flag{c0ns0l3_s33s_4ll}
OUVRIR LA CONSOLE
Appuie sur F12. Clique sur l'onglet Console.
Tu vois un champ de saisie avec un > — c'est là que tu tapes.

Sur Mac : Cmd+Option+J ouvre directement la console.

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.
// 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.

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.
// 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.

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.
// 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.

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.
// 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