Rev0x01

Flag: StarHack{KdgWZUZfUEi9Tl2}

Challenge

file-archive
106KB
circle-info

Description


Ce programme est trop grand mais il est inutile. Pouvez-vous extraire le flag ?

Solution

Ici, on ne peut pas débugger directement. On va passer par une attaque par bruteforce grâce à un side-channel : le nombre d'instructions CPU.

Quand on décompile le binaire, on s'aperçoit que les caractères sont vérifiés 1 par 1 et dès qu'un est mauvais, le processus se termine. Autrement dit, si on a la bonne lettre, on fera un tour de boucle en plus et nécessairement, on exécutera plus d'instructions. C'est ça qu'on peut détecter :

En jaune, on déduit que notre input doit faire 15 de longueur.

En bleu, c'est la condition qui quitte la fonctionne si le caractère n'est pas le bon.

On va passer par valgrind pour compter le nombre d'instructions puisque perf stat ne fonctionne pas sur la majorité des VM (pour ceux comme moi qui sont sur VMWare ou autre).

J'ai simplement modifié le script de https://github.com/nebhrajani-a/taCTFarrow-up-right pour mettre notre charset et éviter de tester des caractères intuiles, ça donne :

circle-exclamation

On lance avec python3 taCTF.py "./task2" -l 15.

Mis à jour