Bienvenido! De lo que se trata es de provocar un desbordamiento (buffer overflow) aprovechando la vulnerabilidad de la función strcpy, de tal forma que logres modificar el puntero EIP para que apunte hacia donde se encuentra la parte del código que quieres ejecutar, que en tu caso, intuyo que se trata de la función "void privada (void)".
Un posible exploit para conseguir tu objetivo podría ser el siguiente:
Código:
\x48\x79\x53\x54\x44\x20\x77\x77\x77\x2E\x48\x61\x63\x6B\x48\x69\x73\x70\x61\x6E
\x6F\x2E\x63\x6F\x6D\x20\x45\x6A\x65\x6D\x70\x6C\x6F\x20\x64\x65\x20\x73\x68\x65
\x6C\x6C\x63\x6F\x38\x10\x40\x00\x90\x90
Tras ejecutarlo, verás un mensaje de propaganda de hackhispano , y la función "void privada (void)" ejecutándose debido al desbordamiento provocado por la función strcpy.
Nota que en un shellcode, cuando aparezca el \x00, lo que venga después no será tenido en cuenta, por ser el caracter \n o fin de línea... (he puesto unos \x90 como ejemplo, lo que equivale a unas instrucciones NOP's, que nunca serán "ejecutados").
La contramedida o protección para este tipo de ataques es usar la función análoga strncpy, o en su defecto, antes de llamar a strcpy, controlar la longitud con strlen, ambas no son vulnerables a desbordamientos de memoria.
Un saludo.
Marcadores