Principe:
Exploiter un input() python… Pour ma part, en lisant le flag bit-à-bit
Infos (cf menu latéral):
🚩 Flaggué! +100 points gagnés —
💾 Téléchargez les fichiers du challenge
404CTF{cH0iX_nUm3r0_4_v1c701r3}
Le challenge

Vous entendrez beaucoup parler de "Hallebarde" ici car c'est le nom du "groupe de vilains hackers" qu'on est censé combattre dans la trame de fond (le Lore) du CTF
L'algorithme



shebang
du fichier, mais je n'en ai pas tiré grand chose

choix
, on voit que l'entrée est interprêtée comme du python,puisqu'ici, la variable choix
est un dict
(dictionnary, aka, un tableau associatif)Fichier du flag

input
interprête notre entrée comme du Python, essayons de lire le contenu de "flag.txt": en local, ça marche
stderr
ne nous est pas retournébit-à-bit

De manière générale, on a ici un "oracle" capable de nous renvoyer 3 valeurs: Pierre, Papier ou Hallebarde (en fonction de ce qu'on a "choisi" de jouer). On peut donc extraire un "trit" d'information à chaque fois. Comme c'est peu pratique, j'ai considéré qu'on a ici un oracle renvoyant deux états (Pierre ou Papier), donc un "bit" d'information pour chaque entrée
Lancement

Si la réponse est "Vous avez choisi: Pierre" à la i-eme question, c'est que le i-eme bit vaut 0, sinon, 1. J'ai répété mon payload 50 fois, considérant que le fichier ferait moins de 50 caractères
Flag

Je ne saisis pas pourquoi ce premier essai est raté

Vu le faible nombre de points du challenge, je sais qu'il existe plus simple (on doit pouvoir injecter le flag dans la liste des choix par exemples), mais j'aime bien cette méthode, et je ne l'ai pas vue chez les autres, donc, je la garde 😀
Flag: 404CTF{cH0iX_nUm3r0_4_v1c701r3}