B01lersCTF 2025 : What | Reverse
Challenge : what
Enoncé :
im so confused
1. Analyse du binaire
Le programme affiche “What did you say?” puis lit une chaîne caractère. La fonction main contient une boucle analysant une chaîne de contrôle contenant uniquement les caractères : ?
, W
, H
, A
, T
, !
.
Chaque bloc commence par ?
(input utilisateur) suivi de plusieurs opérations (W
, H
, A
), se termine par T
(vérification), puis éventuellement !
pour afficher le verdict final.
2. Fonctionnement
Code | Action |
---|---|
? |
Lire un caractère utilisateur et l’affecter à in |
W |
in ^= what[what_idx] |
H |
in += what[what_idx] |
A |
in *= what[what_idx] |
T |
Compare in == solution[idx] , met correct à 0 si échec |
! |
Affiche le flag si correct == 1 , sinon affiche un message d’erreur |
what_idx
tourne modulo 4 à chaque opération.
Chaque suite ?...T
constitue une équation à une inconnue qu’on peut bruteforce.
3. Extraction des données
- Script de contrôle (
S
) : à partir de l’offset0x2008
(terminé par\x00
) - Tableau
what[4]
: offset0x3040
- Tableau
solution[61]
: offset0x3060
(61 QWords)
4. Solve
Solve.py :