La plateforme CTF de l'association EXEGIDE (EPITA Rennes). Ce wiki s'adapte à ton rôle : tu vois ce qui te concerne, et rien de plus.
Utilise la recherche en haut (raccourci /) pour sauter directement à un sujet.
Plusieurs façons d'entrer, au choix.
@epita.fr)./link du bot.ctf_… pour l'API publique (voir l'exemple dédié).Ta page publique et ce que tu choisis d'y montrer.
Ta page publique affiche tes stats, une heatmap d'activité sur 1 an, ton streak, tes succès, tes challenges publiés et tes writeups approuvés.
Un event regroupe des challenges sur une période. Selon sa porte d'accès :
| Mode d'accès | Ce que tu fais |
|---|---|
| Libre | Tu rejoins directement. |
| Sur demande | Tu demandes, un orga valide. |
| Code / lien d'invitation | Tu entres le code ou suis le lien. |
| Mot de passe | Tu saisis le mot de passe de l'event. |
| E-mail autorisé | Ton adresse doit être dans la liste (domaine ou exacte). |
| Vérification e-mail | Tu prouves un domaine via un code reçu par mail. |
Plusieurs portes peuvent coexister (logique « OU »). Un event peut aussi exiger la 2FA.
Chaque event a son mini-site thématisé : pages en blocs + onglets intégrés — Challenges, Scoreboard, Replay, Writeups (et Attaque/Défense le cas échéant). Les annonces arrivent en temps réel. En spectateur, un non-membre peut lire les épreuves sans soumettre.
Le tableau des épreuves, la soumission de flags et ce qui décide de tes points.
La fiche affiche description en blocs, fichiers, valeur dynamique des points (décroît avec les solves), tentatives restantes, tags, auteurs, ambiance sonore, effet visuel, first blood.
CTF{…}.| Mode | Ce que ça change pour toi |
|---|---|
| Statique | Un même flag pour tous. |
| Par joueur | Ton flag unique (affiché, ou injecté dans ta cible/ton fichier). |
| Par joueur & par event | Un flag propre à toi et à l'event courant. |
| Regex / formulaire | Réponse libre validée par motif, ou plusieurs champs. |
| Jury / autograde | Tu soumets un writeup/une réponse ; un correcteur note. |
Certaines épreuves te seedent un « dossier » perso (cookie signé) : tu explores des ressources hébergées pour extraire ton flag. Familles :
| Famille | Exemples |
|---|---|
| Fuite d'info | cookie, en-tête, commentaire HTML, localStorage, robots.txt, .git, sourcemap… |
| Exploitation web | forge de cookie/JWT, IDOR, param, chaîne multi-étapes guidée… |
| Fichiers / forensics | strings, EXIF, LSB PNG, zTXT, polyglotte, morse WAV, WASM… |
| IA | llm_jailbreak — fais fuiter un secret à un gardien LLM (prompt injection). |
Une boîte à outils forensics dans le navigateur (hex, strings/métadonnées, LSB, spectrogramme) t'aide, sans backend.
Ta propre cible, ton propre fichier.
Certains challenges te donnent ta propre cible : un conteneur isolé rien qu'à toi, avec ton flag dedans.
Certains fichiers sont personnalisés : ton flag y est substitué au téléchargement, ou un conteneur isolé te génère ton fichier unique. Des liens signés temporaires (5 min) évitent de s'authentifier. L'accès peut être limité (public / membres / résolveurs).
Après la fin d'un event, les flags valident encore mais ne rapportent aucun point. Il existe aussi un pool d'entraînement permanent. Un même challenge peut être résolu indépendamment dans plusieurs events.
Détecté automatiquement : partage de flag, brute-force, collusion même IP, violation d'IP autorisée, et l'attaque de la plateforme. Sanctions jusqu'au bannissement.
Chaque event choisit un ou plusieurs formats. Ce que ça change pour toi, joueur.
Épreuves par catégorie, chacune un flag. Points fixes ou décroissants, déblocage par prérequis.
Ton équipe défend son service et attaque celui des autres, par ticks.
Prends et garde le contrôle d'une cible ; score au temps de possession.
Détecte et signale les intrusions dans les logs ; alertes jugées vrai/faux positif.
Toute la commu tape un boss commun ; tes solves infligent des dégâts.
Coupes régulières des derniers ; les éliminés ne soumettent plus.
Bracket à élimination directe, têtes de série par score de qualif.
Format court, épreuves resserrées.
24–48 h avec sorties d'épreuves échelonnées.
Épreuves chaînées, classement au temps.
Niveaux permanents ordonnés par prérequis, progression persistante.
Ta box vulnérable perso, flag user + flag root (via instances).
Tu rends un writeup/une réponse, noté après revue.
X-Team-Token ; score selon rang/first-blood/fraîcheur.Où tu te situes, en temps réel.
Feed d'activité (toi + tes suivis), cloche in-app, et bot Discord (solves/first-bloods/annonces + /scoreboard, /challenges, /profil).
Rédige un writeup Markdown (modéré), parcours les approuvés, revis un event via le replay.
Des badges se débloquent automatiquement (solves, first bloods, création, participation, suivre — Socialite, être forké — Mentor). Tu peux équiper un titre cosmétique.
Bibliothèque perso (upload scanné antivirus, quota) réutilisable, et bibliothèque partagée entre créateurs.
Tout utilisateur peut créer des challenges (blocs, flags, fichiers, indices, effets), les forker (l'auteur gagne Mentor) et activer un code de partage. Outils d'auteur : générateurs, images d'instance, lint/scan/test-solve.
API publique en lecture seule (avec une clé perso) : events, scoreboard, challenges. Bot Discord : liaison de compte, annonces live et commandes de consultation.
CTF{…} et colle-le dans le champ Flag → 🎉 solve + points.L'API publique est en lecture seule (events, scoreboard, challenges), idéale pour un script, un overlay stream ou un bot maison.
/account → Clés d'API → Créer. La clé ctf_… n'est affichée qu'une fois : copie-la.Authorization :# Lister les events publics
curl -H "Authorization: Bearer ctf_TA_CLE" \
https://ctf.cloudnow.fr/api/public/events
# Le scoreboard d'un event (par slug)
curl -H "Authorization: Bearer ctf_TA_CLE" \
https://ctf.cloudnow.fr/api/public/events/mon-event/scoreboard
# Les challenges d'un event
curl -H "Authorization: Bearer ctf_TA_CLE" \
https://ctf.cloudnow.fr/api/public/events/mon-event/challenges
/account si elle fuite (génère-en une nouvelle). Réponses en JSON — parse avec jq, Python requests, etc.# Exemple Python
import requests
h = {"Authorization": "Bearer ctf_TA_CLE"}
r = requests.get("https://ctf.cloudnow.fr/api/public/events", headers=h)
for e in r.json():
print(e["slug"], e["status"])