KRUG :
Knock Root out and Uncover the Gonfalon


Qu'est-ce que KRUG ?

KRUG est un Capture the Flag.

Concrètement, KRUG propose aux étudiants et étudiantes du cours de Système et outils de tester, dans un cadre ludique, leur connaissance du système UNIX, du langage C et leur ingéniosité face à des problèmes retors.

Ces énigmes vont au-delà de ce qui est exigé dans le cours, aussi ne s'affolera-t-on pas de ne pas réussir à les résoudre. Trouver une solution à ces problèmes requiert souvent une connaissance fine des principes exposés en cours, ainsi qu'un esprit inventif.

Enregistrer un nouveau Gonfalon

Tableau des scores

Total Flagey Chassagne Fixin Ladoix Amoureuses Epenots Montrachet Richebourg Chambertin
u21801386 39 1 2 2 1 4 4 7 10 8
u32102160 17 1 2 2 1 0 4 7 0 0
u32010748 14 1 2 2 1 4 4 0 0 0
u32100235 14 1 2 2 1 4 4 0 0 0
u32100828 6 1 2 2 1 0 0 0 0 0
u32028006 6 1 2 2 1 0 0 0 0 0
u32112668 4 1 2 0 1 0 0 0 0 0

Comment accéder à KRUG ?

Il faut se connecter en ssh au serveur krug.lacl.fr, sur le port 3333. Cela se fait via la commande

$ ssh -p 3333 numetu@krug.lacl.fr

numetu est à remplacer par son numéro d'étudiant (incluant le 'u' initial). Par défaut, le mot de passe est égal au numéro d'étudiant. On n'hésitera évidemment pas à le modifier en utilisant la commande passwd.

En cas de problème de connexion, merci d'envoyer un mail à julien.grange@lacl.fr.

Quel est le but du jeu ?

Pour chaque énigme, un répertoire a été créé dans le répertoire personnel de chaque utilisatrice et chaque utilisateur. Prenons l'exemple d'une énigme hypothétique, Mercurey.

Voilà les fichiers contenus dans ce répertoire :

$ ls -l ~/mercurey

-rw-rw---- krug_mercurey krug_mercurey secret.txt

-rwsr-sr-x krug_mercurey krug_mercurey mercurey.out

-rw-r--r-- krug_mercurey krug_mercurey mercurey.c

Détaillons chacun de ces fichiers.

secret.txt

Il s'agit d'un fichier texte, comportant une ligne

GONFALON = XXXXXXXXXXXX

où chacun des douze X est un chiffre entre 0 et 9 ou une lettre majuscule entre A et F.

L'objectif est de découvrir la valeur du gonfalon. Bien évidemment, secret.txt n'est pas accessible tel quel en lecture : il appartient à un utilisateur spécifique à l'énigme, krug_mercurey, et lui seul y a accès.

mercurey.out

Il s'agit d'un fichier exécutable. Celui-ci appartient aussi à krug_mercurey et est exécutable par tout le monde. De plus, il possède les drapeaux setuid et setgid (les s parmi les droits d'accès).

Cela signifie que n'importe qui exécutant ce fichier gagne les droits de krug_mercurey pour le temps de l'exécution. Il s'agira donc de se débrouiller pour récupérer la valeur du gonfalon durant l'exécution de ce binaire.

mercurey.c

Ce fichier contient le code source qui a été compilé en mercurey.out. On pourra l'étudier pour en comprendre le fonctionnement et en trouver les failles éventuelles

ATTENTION !

Le répertoire personnel de chaque utilisatrice et utilisateur sera réinitialisé à chaque login, effaçant donc tout le travail effectué. En particulier, on n'ouvrira pas deux connexions ssh en parallèle !

Il arrivera que certaines énigmes ne suivent pas le schéma présenté plus haut ; dans ce cas, on prendra le soin de lire le fichier README situé dans le répertoire correspondant.

Liste des énigmes

Voici la liste des énigmes disponibles à ce jour, classées en trois niveaux de difficulté. On pourra cliquer sur le nom de l'énigme pour obtenir un indice, qu'il est conseillé de ne lire qu'en cas de blocage.

Cette liste est bien évidemment destinée à s'étoffer.

Pour les novices

Une bonne connaissance du cours et l'aide de man devraient suffire à résoudre ces énigmes.

Pour les initié.e.s

Ces énigmes sont plus corsées, et demandent une maîtrise plus fine du programme.

Pour les esthètes

Ces problèmes demandent une bonne dose de créativité et de persévérance.