Le Divin Crackme

Catégorie: Retro Ingénierie - Difficulté: Intro

Description:

Solution:

Pour ce challenge d'introduction au reverse, nous devons retrouver 3 infos : le compilateur qui a servi lors de la création du programme, la fonction permettant de vérifier le mot de passe et le fameux mot de passe.

Pour la première partie (le compilateur) il suffisait d'importer le fichier dans un décompileur tel que Ghidra. Dans la fenêtre d'informations, nous voyons toutes les infos concernant le fichier dont le "Compilator ID" :

Le compilateur est donc GCC.

Maintenant nous allons passer à l'analyse du programme divin-crackme. Pour ce faire, nous allons regarder les fonctions référencées par Ghidra :

La fonction main est souvent la plus intéressante, car nous comprenons ce que le programme fait et lorsque les autres fonctions sont appellées. Voici donc la fonction main :

Ici nous voyons que la fonction main demande le mot de passe à l'utilisateur. Nous voyons même la condition qui dit si le mot de passe entré est valide.

Avant de reconstituer le mot de passe, nous pouvons voir quelle fonction est utilisée pour vérifier ce fameux mot de passe. Il s'agit de la fonction strncmp (string compare) qui check si l'entrée utilisateur est égale à la partie du mot de passe associée (lignes 14 à 16).

Et maintenant il suffit de reconstituer le mot de passe avec les 3 parties. Ici nous avons de la chance et le mot de passe a du sens donc il est encore plus simple de le reconstituer : L4_pH1l0soPh13_d4N5_l3_Cr4cKm3.

Pour vérifier que le mot de passe est correct, nous pouvons directement lancé le programme et lui donner notre mot de passe pour vérifier :

Maintenant que nous avons les 3 parties du flag, il faut simplement les remettre dans l'ordre et envoyer le flag au format habituel.

🚩 FLAG
404CTF{gcc:strncmp:L4_pH1l0soPh13_d4N5_l3_Cr4cKm3}

Last updated