Esta semana ha sido muy ajetreada (trabajos, exámenes, prácticas…) y para liberar un poco de stress, aparte de ir a hacer un poco de footing, he desempolvado un viejo problema del concurso de HackIt! de la Euskal Encounter 2006 y le he dedicado algunos minutos (bueno, vale, tal vez algo más O:-) El reto consiste en ‘romper’ un fichero ejecutable Linux (formato ELF) para obtener una clave. Como ayuda, partimos del siguiente programa C (lógicamente no es exactamente el que genera el ejecutable, pero nos sirve como pista para ver por dónde van los tiros):
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[]){
char serial[15] = "UNREGISTERED";
char login[20]; printf("Introduzca su nombre de usuario: ");
gets(login);
printf("Comprobando número de serie... %sn", serial);
if(!strcmp(serial, "00-11-22-33-44"))
{
printf("Hola %s, bienvenido al sistema...n", login);
printf("La contraseña del siguiente nivel es LALALALAn");
} else
{
printf("Lo siento %s, su numero de serie ha caducadon", login);
exit(-1);
}
}
Sigue leyendo Ingeniería Inversa: cómo destripar un ELF