NETWORK
// ce qui circule — requêtes, réponses, headers, codes
H.A.L. — Chaque page que tu visites est le résultat d'une conversation.
Ton navigateur envoie une requête. Le serveur répond.
L'onglet Network intercepte tout — chaque requête, chaque réponse, chaque header.
C'est là que se cache ce que le challenge 01 te demande de trouver.
Ton navigateur envoie une requête. Le serveur répond.
L'onglet Network intercepte tout — chaque requête, chaque réponse, chaque header.
C'est là que se cache ce que le challenge 01 te demande de trouver.
// étape 01
OUVRIR L'ONGLET NETWORK
F12 → onglet Network (Réseau sur Firefox).
L'onglet est vide au départ. Recharge la page (F5) — toutes les requêtes apparaissent.
Clique sur n'importe quelle ligne pour voir les détails : headers, réponse, timing.
L'onglet est vide au départ. Recharge la page (F5) — toutes les requêtes apparaissent.
Clique sur n'importe quelle ligne pour voir les détails : headers, réponse, timing.
Si la liste est vide après rechargement, vérifie que l'enregistrement est actif — le bouton rond en haut à gauche de l'onglet doit être rouge.
// étape 02
LA REQUÊTE GET
Quand tu tapes une URL dans la barre d'adresse et appuies sur Entrée,
ton navigateur envoie une requête GET.
GET = "donne-moi cette ressource". Les paramètres sont visibles dans l'URL.
GET = "donne-moi cette ressource". Les paramètres sont visibles dans l'URL.
GET /challenge/1 HTTP/1.1
Host: hal.anotherlab.fr
User-Agent: Mozilla/5.0 ...
Accept: text/html
Dans l'onglet Network, chaque ligne correspond à une requête.
Colonne Method = GET ou POST. Colonne Status = code de réponse.
Colonne Method = GET ou POST. Colonne Status = code de réponse.
// étape 03
LA REQUÊTE POST
Quand tu soumets un formulaire ou envoies des données, c'est une requête POST.
Les données ne sont pas dans l'URL — elles sont dans le corps de la requête.
Invisibles dans la barre d'adresse. Visibles dans l'onglet Network.
Les données ne sont pas dans l'URL — elles sont dans le corps de la requête.
Invisibles dans la barre d'adresse. Visibles dans l'onglet Network.
POST /flag HTTP/1.1
Content-Type: application/json
{"challenge": 1, "flag": "flag{...}"}
Dans Network, clique sur une requête POST → onglet Payload (ou Corps de la requête).
Tu vois exactement ce que le navigateur a envoyé au serveur.
Tu vois exactement ce que le navigateur a envoyé au serveur.
Ouvre l'onglet Network avant de cliquer. Cherche la requête vers /score.
// étape 04
LES HEADERS
Chaque requête et chaque réponse transporte des headers — des métadonnées.
Ils ne s'affichent pas dans la page. Ils circulent en coulisse.
Le serveur lit les headers de ta requête. Tu dois lire les headers de sa réponse.
Ils ne s'affichent pas dans la page. Ils circulent en coulisse.
Le serveur lit les headers de ta requête. Tu dois lire les headers de sa réponse.
// requête → serveur
User-Agent: qui tu es (navigateur, curl, bot…)
Cookie: ce que le serveur t'a donné à mémoriser
Content-Type: format des données envoyées
Cookie: ce que le serveur t'a donné à mémoriser
Content-Type: format des données envoyées
// réponse ← serveur
Content-Type: format de la réponse
Set-Cookie: cookie à stocker
X-HAL-Message: quelque chose de particulier…
Set-Cookie: cookie à stocker
X-HAL-Message: quelque chose de particulier…
Dans Network → clique sur une requête → onglet Headers.
Tu vois les headers envoyés (Request Headers) et reçus (Response Headers).
Tu vois les headers envoyés (Request Headers) et reçus (Response Headers).
Indice direct : le challenge 01 de ce CTF cache quelque chose dans les Response Headers.
// étape 05
LES CODES DE RÉPONSE
Chaque réponse du serveur commence par un code à 3 chiffres.
Il indique si ça s'est bien passé — ou pourquoi ça n'a pas marché.
Il indique si ça s'est bien passé — ou pourquoi ça n'a pas marché.
| 200 | OK — tout s'est bien passé |
| 301 | Redirect — la ressource a bougé |
| 400 | Bad Request — ta requête est mal formée |
| 403 | Forbidden — accès refusé (tu n'as pas le droit) |
| 404 | Not Found — cette ressource n'existe pas |
| 500 | Server Error — le serveur a planté |
Un 403 n'est pas une impasse. Il signifie souvent "pas comme ça" — pas "jamais".
"Tu vois maintenant ce qui circule.
La prochaine étape : utiliser la console pour lire, modifier, envoyer."
— H.A.L. // système en ligne
La prochaine étape : utiliser la console pour lire, modifier, envoyer."
— H.A.L. // système en ligne
// tu as trouvé un flag ?