Patchinko
Auteur : Bdenneu
----------------------------------
L’énoncé
Venez tester la nouvelle version de machine de jeu Patchinko ! Les chances de victoire étant proches de zéro, nous aidons les joueurs. Prouvez qu’il est possible de compromettre le système pour lire le fichier flag .
Note : le service permet de patcher le binaire donné avant de l’exécuter.
Service : nc challenges1.france-cybersecurity-challenge.fr 4009
On reverse!
Dans ce challenge, on a le droit de modifier un byte du binaire avant son exécution. Voici la fonction main :
Le programme récupere l’entrée utilisateur (fgets), lance strlen dessus pour nous demander si l’on s’est déjà connecté, puis lance un jeu de divination. L’idée la plus simple que j’ai trouvé ici a été de modifier le call sym.imp.strlen pour le transformer en call sym.imp.system vu que le call est relatif à l’endroit où il est appelé. Dans la plt, system est juste après strlen (écart de 0x10) :
Le call de sym.imp.strlen dans main est à l’offset 0x888.
Notre payload sera donc 889 (emplacement du call ) et 43 (0x33+0x10) pour qu’il execute system au lieu de strlen.
Flag
FCSC{b4cbc07a77bb0984b994c9e34b2897ab49f08524402c38621a38bc4475102998}