TP : La chasse au trésor
Objectif
Le barman d'API-ritif a caché un trésor quelque part dans son API. Pour le trouver, il faudra lire attentivement chaque réponse : codes de statut, headers, body… Rien n'est là par hasard.
Chaque étape franchie vous donne un flag : il se trouve dans le header de la réponse (X-Flag). Il y a 9 flags à activer.
TP noté, utilisation de curl ou bruno au choix
Consignes
Règles du jeu
Inscrivez-vous avec le pseudo prenom-nom, sans accents ni espaces (ex. : helene-dupre). C'est lui qui permet au formateur de vous noter : un pseudo fantaisiste, c'est un TP sans note.
- Chaque réponse de l'API contient l'indice qui mène à l'étape suivante (header
X-Hint). Lisez tout, y compris les headers (curl -i). - Quand vous franchissez une étape, la réponse contient son flag dans le header
X-Flag, pas dans le body. Sanscurl -i, vous ne verrez ni les flags ni les indices. - Dès que vous avez une clé d'API, soumettez chaque flag trouvé :
curl -i http://api-ritif.portlatch.com/v1/hunt/flag \ -H "X-API-Key: $KEY" \ --json '{"code": "RITIF-XXXX-XXXXXXXX"}' - Les flags se valident dans l'ordre, et ne s'échangent pas : chaque flag (sauf le premier) est lié à votre clé.
Bloqué ? Relisez la page des codes de statut et celle des verbes HTTP. Un message d'erreur est souvent un indice.
Les 9 flags à activer
Chaque étape ci-dessous renvoie un flag dans le header de la réponse. Soumettez-les dans cet ordre :
- Lire les headers de l'accueil du bar.
- Vous inscrire comme client du bar.
- Vous présenter au barman : d'abord sans clé, puis avec.
- Trouver le cocktail secret de la carte et le consulter.
- Commander un thé.
- Commander un cocktail et suivre sa commande jusqu'à ce qu'elle soit prête.
- Annuler une commande à temps. Découvrez au passage ce que répond
OPTIONS. - Obtenir un cocktail en XML.
- Faire déborder le barman jusqu'au
429, respecter le délai demandé, puis refaire une requête.
Point de départ
Tout commence à l'accueil du bar :
curl -i http://api-ritif.portlatch.com/v1/
Le reste, c'est à vous de le trouver. Santé ! 🍹