LeHack 19 - my first crackme

Posted on dim. 07 juillet 2019 in CTF

File : checkme.py

my first crackme
5 Points
Tu dois trouver le mot de passe qui valide le script python!

Url: https://static.wargame.rocks/checkme.py

On a un seul fichier qui est un script Python. On l'ouvre donc avec notre éditeur de texte préféré (vim for ever <3) :

#!/usr/bin/env python3

flag = 'repuS'[::(-1 * 88 + 87 * 0 * 183 + 80 + 0 * 125 + 7)] + chr(0 * 161 + 1 * 0 * 140 + 76 + 0 * 72 + 7) + chr(-26 + 0 * 53 + 0 * 5 * 44 + 26 + 0 * 141 + 101) + chr(0 * 153 + 14 * 0 * 152 + 4 + 1 * 94 + 1) + ('FfdkCtfr'[::-1]).replace('f','e').replace(chr(4 * 26 + 3), chr(0 * 142 + 111)) + 'fzfqfQorTheWinjkildzodzp'[6:14]
pass1 = input(' :essap ed tom ertov rertne zelliuev'[::-1])
if pass1 == flag:
    print('Bien joue, tu as trouve le flag!')
else:
    print ('Loupe... essaye encore!')

On comprend que le flag est défini par un série d'opération sur des caractères. Le plus simple est alors de simplement rajouter un print(flag) après qu'il soit défini en supprimant le test. Par exemple :

#!/usr/bin/env python3

flag = 'repuS'[::(-1 * 88 + 87 * 0 * 183 + 80 + 0 * 125 + 7)] + chr(0 * 161 + 1 * 0 * 140 + 76 + 0 * 72 + 7) + chr(-26 + 0 * 53 + 0 * 5 * 44 + 26 + 0 * 141 + 101) + chr(0 * 153 + 14 * 0 * 152 + 4 + 1 * 94 + 1) + ('FfdkCtfr'[::-1]).replace('f','e').replace(chr(4 * 26 + 3), chr(0 * 142 + 111)) + 'fzfqfQorTheWinjkildzodzp'[6:14]
print(flag)

Le flag s'affiche alors et on peut valider le chall : SuperSecretCodeForTheWin.