From f6dc208f376171488c7d50f8b15150463d211875 Mon Sep 17 00:00:00 2001 From: Jakub WERLINSKI Date: Fri, 24 Jul 2026 16:24:37 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20coh=C3=A9rence=20=E2=80=94=20chemins=20?= =?UTF-8?q?=C3=A0=20jour,=20flags=20rot=C3=A9s=20g=C3=A9n=C3=A9riques,=20t?= =?UTF-8?q?ableau=20README=20complet?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - corrige les références à d'anciens noms de dossiers (3-Red-Team-Binary-Vault -> 1-Red-Team-Binary-Vault-Jakub ; 2-Blue-Team-Memory-Forensics -> -Jakub) - VAULT SOLUTION.md : titre "Red Team 1" + flags génériques (rotés via challenge.env) - README racine : tableau des challenges complété (Nexus Cipher, Hardening) --- README.md | 5 +++-- challenges/1-Red-Team-Binary-Vault-Jakub/README.md | 2 +- .../docs/ADMIN_DEPLOYMENT.md | 4 ++-- .../solution/SOLUTION.md | 13 ++++++++----- .../2-Blue-Team-Memory-Forensics-Jakub/README.md | 2 +- 5 files changed, 15 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 52308e9..3da89a2 100644 --- a/README.md +++ b/README.md @@ -63,8 +63,9 @@ Numérotation par équipe (`N-Blue-Team-*` / `N-Red-Team-*`). | Blue 2 | `challenges/2-Blue-Team-Memory-Forensics-Jakub` | Mémoire et analyse de malware (Volatility) | Blue Team | Intégré | | Red 1 | `challenges/1-Red-Team-Binary-Vault-Jakub` | VAULT-9 — reverse + exploitation binaire (ret2win) | Red Team | Intégré | | Red 2 | `challenges/2-Red-Team-Operation-Silent-Ledger-Lucas` | Opération Silent Ledger — machine Linux compromise (SSH → escalade → GPG) | Red Team | Intégré | -| Blue 3-4 | _à venir_ | — | Blue Team | À faire | -| Red 3-4 | _à venir_ | — | Red Team | À faire | +| Blue 3 | `challenges/3-Blue-Team-Hardening-Lucas` | Hardening / durcissement système | Blue Team | Intégré | +| Red 3 | `challenges/3-Red-Team-Nexus-Cipher-Sarah` | Cipher — pentest du portail API Nexus (crypto/web, 10 flags) | Red Team | Intégré | +| Blue 4 / Red 4 | _à venir_ | — | — | À faire | ## Ajout d'un challenge sur le serveur diff --git a/challenges/1-Red-Team-Binary-Vault-Jakub/README.md b/challenges/1-Red-Team-Binary-Vault-Jakub/README.md index 25d9fca..94e8dd8 100644 --- a/challenges/1-Red-Team-Binary-Vault-Jakub/README.md +++ b/challenges/1-Red-Team-Binary-Vault-Jakub/README.md @@ -30,7 +30,7 @@ rétro-ingénier puis à exploiter. Conçu pour combler l'écart entre les Blue ## 📁 Structure ``` -3-Red-Team-Binary-Vault/ +1-Red-Team-Binary-Vault-Jakub/ ├── README.md ├── Dockerfile ← build + service socat (port 9003) ├── docker-compose.yml ← test local diff --git a/challenges/1-Red-Team-Binary-Vault-Jakub/docs/ADMIN_DEPLOYMENT.md b/challenges/1-Red-Team-Binary-Vault-Jakub/docs/ADMIN_DEPLOYMENT.md index 9ad0496..70b94b9 100644 --- a/challenges/1-Red-Team-Binary-Vault-Jakub/docs/ADMIN_DEPLOYMENT.md +++ b/challenges/1-Red-Team-Binary-Vault-Jakub/docs/ADMIN_DEPLOYMENT.md @@ -22,7 +22,7 @@ par l'un des deux moyens (l'environnement a priorité sur le fichier) : **Option A — fichier `challenge.env` (recommandé)** ```bash -cd challenges/3-Red-Team-Binary-Vault/setup +cd challenges/1-Red-Team-Binary-Vault-Jakub/setup cp challenge.env.example challenge.env $EDITOR challenge.env # renseigner LICENSE, FLAG1, FLAG2 ``` @@ -56,7 +56,7 @@ inutilisable en prod. ## Build & test local ```bash -cd challenges/3-Red-Team-Binary-Vault +cd challenges/1-Red-Team-Binary-Vault-Jakub docker-compose up --build -d # ou : docker compose up --build -d (plugin v2) # le service écoute sur le port 9003 nc 127.0.0.1 9003 diff --git a/challenges/1-Red-Team-Binary-Vault-Jakub/solution/SOLUTION.md b/challenges/1-Red-Team-Binary-Vault-Jakub/solution/SOLUTION.md index 2750c96..2f706df 100644 --- a/challenges/1-Red-Team-Binary-Vault-Jakub/solution/SOLUTION.md +++ b/challenges/1-Red-Team-Binary-Vault-Jakub/solution/SOLUTION.md @@ -1,9 +1,12 @@ -# Solution — VAULT-9 (Red Team 3) ⚠️ SPOILERS +# Solution — VAULT-9 (Red Team 1) ⚠️ SPOILERS Challenge intermédiaire en deux étapes : **reverse** puis **exploitation binaire (ret2win)**. -- **Flag 1** : `RM{r3v3rs3_l3_x0r_c0mm3_un_pr0}` -- **Flag 2** : `RM{r3t2w1n_l4_v4ult_3st_0uv3rt3}` +> Les flags et la licence sont **rotés par déploiement** (définis dans `setup/challenge.env`, +> jamais committés) : les valeurs réelles dépendent de l'instance déployée. + +- **Flag 1** (reverse) : `RM{…défini dans setup/challenge.env…}` +- **Flag 2** (pwn) : `RM{…défini dans setup/challenge.env…}` Le binaire est compilé **sans canari de pile et sans PIE** (`-fno-stack-protector -no-pie`), ce qui rend le ret2win réalisable au niveau intermédiaire. @@ -64,8 +67,8 @@ Sortie attendue : ``` [+] vault() @ 0x401334 -[+] Flag 1 : RM{r3v3rs3_l3_x0r_c0mm3_un_pr0} -[+] Flag 2 : RM{r3t2w1n_l4_v4ult_3st_0uv3rt3} +[+] Flag 1 : RM{…flag roté…} +[+] Flag 2 : RM{…flag roté…} ``` > Testé et validé le 20/07/2026, **en conteneur Docker** : build OK, chaîne complète fonctionnelle (offset 72, gadget `ret` pour l'alignement, ret2win vers `vault` @ `0x401334`). Les 2 flags sont récupérés par `exploit.py`. diff --git a/challenges/2-Blue-Team-Memory-Forensics-Jakub/README.md b/challenges/2-Blue-Team-Memory-Forensics-Jakub/README.md index b02f7a4..588b37c 100644 --- a/challenges/2-Blue-Team-Memory-Forensics-Jakub/README.md +++ b/challenges/2-Blue-Team-Memory-Forensics-Jakub/README.md @@ -20,7 +20,7 @@ L'investigation préliminaire suggère que **l'attaquant a déployé un implant ## 📁 Structure du Challenge ``` -2-Blue-Team-Memory-Forensics/ +2-Blue-Team-Memory-Forensics-Jakub/ ├── README.md ← Vous êtes ici ├── Dockerfile ← Image du challenge ├── docker-compose.yml ← Orchestration Docker