Skip to content

Latest commit

 

History

History
97 lines (62 loc) · 4.52 KB

README.md

File metadata and controls

97 lines (62 loc) · 4.52 KB

Breizh CTF 2023

Logo

Scoreboard

Pool (par ordre alphabétique)

Challenges

Les différents challenges sont stockés dans le dossier challenges/. Ces derniers sont répartis par catégories (un dossier par catégorie).

Architecture d'un challenge

Les challenges doivent respecter une architecture comme définie dans le dossier challenges/_exemple.

challenge.yml

Le fichier challenge.yml suit la convention défini par ctfcli utilisé pour le déploiement automatique de challenge.

Exemple de fichier challenge.yml.

solve.py

Lorsque cela est possible, implémentez un script de résolution du challenge. Ce dernier peut notamment contenir de assertions pour aider les organisateurs en cas de troubleshot.

Note : après validations croisées des challenges, il est possible de multiplier les scripts, avec par exemple, solve_pseudo.py.

Build

Dans la plupart des cas, les challenges pourront tourner dans des conteneurs. Dans ce cas un fichier Dockerfile doit obligatoirement être à la racine du projet. La pipeline est configurée pour automatiquement build les images docker.

Lorsque cela est possible, le dossier Build doit contenir les sources nécessaires à la génération du challenge. Le script de build doit pouvoir faciliter la génération du challenge avec un nouveau Flag.

WriteUp

Dossier contenant un Write-Up du challenge au format Markdown. Les captures d'écrans et fichiers peuvent être stocker à même le dossier ou dans des sous-dossiers au bon vouloir de l'auteur.

Note : après validations croisées des challenges, il est possible de multiplier les WriteUp, avec par exemple, le dossier WriteUp_pseudo.

Files

Dossier contenant le(s) fichier(s) fournis dans le challenge. L'ajout du md5sum des fichiers dans la description du challenge est recommandé.

Pensez aussi à rajouter vos fichier dans le challenge.yml pour qu'ils soient automatiquement envoyés sur CTFd

Docker

Dossier contenant le Dockerfile du challenge ainsi que les fichiers du service (voir section Docker).

Points

Les points attribués aux challenges sont dynamiques (500 pts dégressifs), mais un niveau de difficulté (Très Facile, Facile, Moyen, Difficile, Très Difficile) doit être attribué pour chaque challenge afin d'orienter les joueurs.

Docker

Afin d'homogénéiser les images Docker, plusieurs modeles d'image sont à votre disposition dans le dossier docker. L'objectif du dossier docker n'est pas de copier son contenu, mais de l'utiliser comme image de base.

Le dossier contient 3 images de base :

  • tcp qui est une image alpine avec socat préconfiguré sur le port 1337. Le programme lancé par socat doit se trouver dans /challenge/challenge dans le conteneur. Vous trouverez un exemple d'utilisation dans le dossier _exemple_tcp
  • web qui est une image alpine avec apache2+php8 d'installé. La racine du serveur web se trouve dans le dossier /challenge du conteneur. Vous trouverez un exemple d'utilisation dans le dossier _exemple_web
  • python qui est une simple image avec python3 installé. Le programme par défaut doit se trouver dans le dossier /challenge/challenge.py du conteneur

Le port par défaut à utiliser pour les services sont :

  • 80 pour HTTP
  • 1337 pour TCP

Links