Le Divin Crackme
Last updated
Last updated
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.