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.
Total | Flagey | Chassagne | Fixin | Ladoix | Amoureuses | Epenots | Montrachet | Richebourg | Chambertin | |
---|---|---|---|---|---|---|---|---|---|---|
u21801386 | 39 | 1 | 2 | 2 | 1 | 4 | 4 | 7 | 10 | 8 |
u32102160 | 29 | 1 | 2 | 2 | 1 | 4 | 4 | 7 | 0 | 8 |
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 |
u32419258 | 3 | 1 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
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
où 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.
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.
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.
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.
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
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.
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.
Une bonne connaissance du cours et l'aide de man devraient suffire à résoudre ces énigmes.
Ces énigmes sont plus corsées, et demandent une maîtrise plus fine du programme.
Ces problèmes demandent une bonne dose de créativité et de persévérance.