Skip to content

Challenges pour l'inter IUT 2020

License

Notifications You must be signed in to change notification settings

CTF-Inter-IUT/InterIUT-2020

Repository files navigation

InterIUT 2k20

Docker

Commencer à travailler

  • Execution du script ./setup.sh (qui pour le moment n'ajoute qu'un hook pour décider des conteneurs à build dans la CI)

Procédure d'ajout d'un challenge

  • Ajout et détail dans le drive
  • Ajout dans l'outil de gestion de projet
  • Création du dossier à partir du template (cp -r 00-challs-exemple XX-nom-du-chall)
  • Si le challenge a besoin d'un conteneur, creer le Dockerfile qui hebergera le challenge. Sauf exceptions, celui soit se baser sur une image registry.alfred.cafe/interiut/interiut-base-xxx avec xxx etant l'un des dossiers ./docker/xxx
  • Dès que le Dockerfile est correct et que vous faites un commit le script .githooks/pre-commit va generer le fichier .github/workflows/docker-publish.yml a partir du drive et l'arborescence du depot. Des lors, l'image docker du challenge est build par la CI et se retrouve sur registry.alfred.cafe a chaque push.

Procedure de deploiement d'un challenge

  • Verifiez que toutes les etape de Procédure d'ajout d'un challenge ont ete respectes.
  • Lire le fichier infra/README.md pour faire connaissance avec l'infra et installer tous les outils
  • La liste de tous les challenges se trouve dans le fichier infra/dev/challz/variable.tf

Il existe (pour l'instant) 3 types de challenges :

Challenge "file"

J'avoue c'est pas tres explicite comme nom, mais un challenge "file" est un challenge qui n'a besoin que d'un ajout du CTFd. Par exemple un chall ou on fournit un pcap.

Challenge "web"

Un challenge qui a besoin d'au moins un conteneur pour heberger le challenge. Celui ci doit exposer un seul port dans son Dockerfile pour etre detecte par traefik. L'url du challenge sera alors nom-du-dossier-sans-l'id.challz.interiut.ctf.

Si le challenge web a besoin d'une BDD, alors vous pouvez rajouter l'argument require_mysql = 1 afin de monter une base de donnees mysql. Celle ci sera accessible sous le nom d'hote database avec l'utilisateur root et sans mot de passe. Vous pouvez aussi fournit un script de provisioning avec la variable mysql_init_script = 'xxx.sql' qui est un chemin relatif au dossier du challenge.

Challenge "tcp"

Un challenge qui a besoin d'un port dedie a son fonctionnement. Vous devez alors avoir un Dockerfile valide qui expose un port quelconque. Vous devez indiquer le port a exposer avec la variable port = 1337.

Procédure de déploiement et infra

Voir infra/README.md

Connection au VPN sur linux

Si vous utilisez network-manager, wireguard est supporte depuis la version 1.16, mais uniquement avec nmcli :

nmcli connection import type wireguard file wg0.conf
nmcli c modify wg0 ipv4.dns-search interiut.ctf

Sinon vous pouvez utiliser wg-quick (Qui est inclu dans le package wireguard) :

sudo cp wg0.conf /etc/wireguard/
sudo wg-quick up wg0

Challenges pour l'inter IUT