Estoy intentando implementar return-to-libc,
aquí está el código
void func(const char *str) {
char buf[4];
strcpy(buf,str);
printf("you entered [%s]\n",buf);
}
int main(int argc, char *argv[]) {
if(argc != 2) {
printf("Need an argument\n");
return 0;
}
func(argv[1]);
return 0;
}
Ahora el problema es que la dirección de la función system
que mi PC me da es de 6 dígitos hexadecimales en lugar de 8 dígitos hexadecimales (lo que significa que los dos dígitos delanteros son ceros), pero uso strcpy para copiar la cadena , que termina copiando la cadena tan pronto como encuentra un carácter nulo.
¿Alguna idea de cómo copiar la cadena completa que pase, incluido el carácter nulo?
O cualquier cosa que creas que me ayudará con esto, se agradece.