Tengo la intención de explotar el siguiente programa en una máquina x86 Linux con NX habilitado (ASLR y pila canario deshabilitados). El objetivo es conseguir una concha.
//vuln.c
#include <stdio.h>
#include <string.h>
int main(int argc, char* argv[]) {
char buf[256]; /* [1] */
strcpy(buf,argv[1]); /* [2] */
printf("%s\n",buf); /* [3] */
fflush(stdout); /* [4] */
return 0;
}
Mi estrategia es usar ret2libc e inyectar mi carga útil:
payload = <filler> + <addr of system> + <addr of exit> + <arg1 for system>
La carga útil tiene la intención de utilizar la API del sistema para llamar a / bin / sh para obtener un shell. Sin embargo, addr of system contiene 00 en el medio y strcpy dejará caer mi carga después del finalizador nulo.
¿Cuál sería la estrategia para explotar este binario entonces?