Esta pagina se ve mejor con JavaScript habilitado

Obtener password crackme mediante ltrace

 ·  🎃 kr0m

Vamos a resolver un crackme anterior pero esta vez lo abordaremos de forma completamente distinta, en vez de parchear un salto condicional con radare buscaremos el password correcto monitorizando las llamadas a las shared libaries.

El código es tan sencillo como este:

vi 00.c

#include<stdio.h>
int main(void){
    char str1[20];
    printf("Crackme 0x00 Coded by Kr0m\n");
    printf("Introduzca password: ");
    scanf("%s", str1);
    if (strcmp(str1, "666-666") == 0){
            printf("Ohu yeyesss Password Correcto!\n");
    } else {
            printf("ERROR: Password incorrecto!\n");
    }
}

Compilamos:

gcc 00.c -o 00

Compilamos e instalamos la herramienta ltrace que nos permitirá ver las llamadas que hace el binario a las shared libraries:

emerge dev-util/ltrace

Ejecutamos el binario mediante ltrace:

ltrace ./00

puts("Crackme 0x00 Coded by Kr0m"Crackme 0x00 Coded by Kr0m)                                   = 27
printf("Introduzca password: ")                                      = 21
__isoc99_scanf(0x55b473af78d9, 0x7ffeedf39420, 0x7f5dc37638a0, 0Introduzca password: asd)    = 1
strcmp("asd", "666-666")                                             = 43
puts("ERROR: Password incorrecto!"ERROR: Password incorrecto!)                                  = 28
+++ exited (status 0) +++

La entrada ha sido asd y la compara con 666-666, que ocurrirá si metemos 666-666 como password?

./00

Crackme 0x00 Coded by Kr0m
Introduzca password: 666-666
Ohu yeyesss Password Correcto!
Si te ha gustado el artículo puedes invitarme a un RedBull aquí