digital
wallonia
.be
CYBER
WEEK25

Guide des Capture The Flag

Votre guide complet pour apprendre, pratiquer et exceller dans les compétitions CTF en cybersécurité. De débutant à expert.

Qu'est-ce qu'un CTF ?

Un Capture The Flag (CTF) est une compétition de cybersécurité où les participants, souvent en équipes, sont mis au défi de résoudre divers problèmes liés à la sécurité, ou "challenges", afin de trouver un morceau de texte secret, appelé "drapeau" (ou "flag").

Lorsque vous résolvez un défi, vous trouvez une chaîne de texte (le flag), généralement dans un format spécifique comme CW{...}. Vous soumettez ce flag sur la plateforme CTF pour gagner des points. L'équipe avec le plus de points gagne.

Prérequis & Préparation

Avant de vous lancer dans les CTF, assurez-vous d'avoir les connaissances et les outils nécessaires pour réussir

Connaissances de Base

Notions en programmation (Python recommandé), compréhension des systèmes d'exploitation et des réseaux

  • Bases en Python, JavaScript ou C
  • Ligne de commande Linux/Unix
  • Protocoles réseau (HTTP, TCP/IP)
  • Encodage et formats de données

Environnement de Travail

Deux machines virtuelles sont vivement conseillées pour couvrir tous les types de challenges.

  • VM Linux (Kali Linux ou Parrot OS)
  • VM Windows (Windows 10/11)
  • VirtualBox ou VMware pour la virtualisation
  • Au moins 8GB RAM et 50GB d'espace disque par VM

Outils Essentiels

Les outils de base pour analyser et résoudre les challenges CTF

  • Terminal/Shell avancé (Bash, Zsh)
  • Éditeur de texte (VSCode, Vim)
  • Navigateur web avec dev tools
  • Git pour le versioning

Logiciels et Utilitaires

Installation des outils spécialisés pour chaque catégorie de challenge

  • Wireshark (analyse réseau)
  • Burp Suite (web exploitation)
  • Ghidra/IDA (reverse engineering)
  • CyberChef (encodage/décodage)

🎯 État d'Esprit du CTF Player

Au-delà des compétences techniques, adopter le bon état d'esprit est crucial pour progresser dans les CTF :

Patience et persévérance - certains challenges peuvent prendre des heures
Curiosité et créativité - pensez différemment
Capacité à rechercher - Google et la documentation sont vos amis
Esprit d'équipe - collaborez et partagez vos connaissances

Ce Que Vous Allez Rencontrer

Découvrez les types de challenges typiques dans les compétitions CTF et ce à quoi vous devez vous préparer

🔒

Cryptographie

Des challenges de chiffrement que vous allez rencontrer : décodage de messages, cassage de clés faibles et analyse de systèmes cryptographiques.

  • Déchiffrement César/Vigenère
  • RSA avec petits exposants
  • XOR avec clé répétée
  • Hash cracking MD5/SHA
🌐

Web Exploitation

Exploitez les failles web classiques : injections SQL, XSS, manipulation de cookies et contournement d'authentification.

  • SQL Injection basique
  • Reflected/Stored XSS
  • Path traversal
  • Session hijacking
⚙️

Reverse Engineering

Analysez des binaires pour comprendre leur fonctionnement et extraire des flags cachés dans le code compilé.

  • Crackmes simples
  • Analyse de strings
  • Patching de binaires
  • Détection d'algorithmes
🖼️

Stéganographie

Trouvez des informations cachées dans des images, fichiers audio ou documents apparemment innocents.

  • LSB dans images PNG
  • Metadata EXIF
  • Messages cachés dans audio
  • Analyse spectrale
🔍

Forensics

Enquêtez sur des fichiers corrompus, analysez des captures réseau et récupérez des données supprimées.

  • Fichiers corrompus à réparer
  • Analyse PCAP
  • Memory dumps
  • Carving de fichiers
💾

Binary Exploitation

Exploitez des vulnérabilités de bas niveau pour prendre le contrôle de programmes vulnérables.

  • Buffer overflow basique
  • Format string bugs
  • ROP chains simples
  • Integer overflow
📝

Scripting & Automation

Certains challenges nécessitent d'automatiser des tâches répétitives ou de scripter des attaques.

  • Bruteforce de mots de passe
  • Automatisation de requêtes
  • Parsing de données
  • API exploitation
🛡️

OSINT & Recon

Collectez des informations publiques et effectuez de la reconnaissance pour résoudre des énigmes.

  • Google dorking
  • Recherche de métadonnées
  • Analyse de réseaux sociaux
  • Géolocalisation

Exemple Pratique

Découvrez un défi complet de cryptographie avec sa solution détaillée

🔒

Défi: Le Chiffre de César

Cryptographie

Difficulté: Débutant

Description du défi

Vous avez intercepté un message chiffré: DHR YR PGS PBZZRAPR !

Ce message a été chiffré avec un chiffre de substitution classique. Déchiffrez-le pour obtenir le flag au format: CW{texte_dechiffre}

Message chiffré:

DHR YR PGS PBZZRAPR !

Indices

Indice 1:

Le chiffre de César décale chaque lettre de l'alphabet d'un nombre fixe de positions.

Indice 2:

Il n'y a que 25 décalages possibles. Essayez-les tous ou cherchez des mots courants.

Indice 3:

Le décalage utilisé ici est de 13 positions vers la droite (ROT13).

Solution expliquée

Étape 1: Identifier le type de chiffrement

Le message contient uniquement des lettres majuscules, ce qui suggère un chiffre de substitution simple comme César.

Étape 2: Tester les décalages

On peut tester manuellement ou utiliser un outil pour essayer tous les décalages (bruteforce):

ROT1: EIS ZS QHT QCAASBQS !
ROT2: FJT AT RIU RDBBTCRT !
ROT13: QUE LE CTF COMMENCE !
Étape 3: Déchiffrer le message

Avec un décalage de 13 vers la gauche (ou -13 vers la droite), on obtient:

"QUE LE CTF COMMENCE !"

Flag:

CW{QUE LE CTF COMMENCE !}

Code Python pour résoudre le défi

def caesar_decrypt(text, shift):
    """Déchiffre un texte avec le chiffre de César"""
    result = ""
    for char in text:
        if char.isalpha():
            # Déterminer si majuscule ou minuscule
            start = ord('A') if char.isupper() else ord('a')
            # Décaler la lettre
            shifted = (ord(char) - start - shift) % 26
            result += chr(start + shifted)
        else:
            result += char
    return result

# Message chiffré
ciphertext = "DHR YR PGS PBZZRAPR !"

# Tester tous les décalages possibles
print("Bruteforce de tous les décalages:\n")
for shift in range(26):
    decrypted = caesar_decrypt(ciphertext, shift)
    print(f"ROT{shift}: {decrypted}")

# Résultat avec ROT13
print(f"\nFlag: CW{{{caesar_decrypt(ciphertext, 13).replace(' ', '_')}}}")

Ce script teste automatiquement tous les décalages possibles et affiche les résultats. Vous pouvez facilement identifier le message qui a du sens.

Ressources Complémentaires

Outils, livres, plateformes et contenus pour approfondir vos connaissances

📚

Livres Recommandés

Lectures pour approfondir vos connaissances

The Web Application Hacker's Handbook

par Dafydd Stuttard & Marcus Pinto

Hacking: The Art of Exploitation

par Jon Erickson

Practical Malware Analysis

par Michael Sikorski & Andrew Honig

Metasploit: The Penetration Tester's Guide

par David Kennedy

📺

Contenus Vidéo

Chaînes YouTube pour apprendre visuellement

LiveOverflow

Chaîne YouTube sur le hacking et CTF

IppSec

Walkthroughs de machines HackTheBox

John Hammond

Tutoriels CTF et cybersécurité

The Cyber Mentor

Cours de pentesting et ethical hacking