Intendo sfruttare il seguente programma su una macchina Linux x86 con NX abilitato (ASLR e stack canary disabilitato). L'obiettivo è ottenere una shell.
//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;
}
La mia strategia è usare ret2libc e iniettare il mio carico utile:
payload = <filler> + <addr of system> + <addr of exit> + <arg1 for system>
Il payload intende utilizzare l'API di sistema per chiamare / bin / sh per ottenere una shell. Tuttavia, l'addr del sistema contiene 00 nel mezzo e strcpy scaricherà il mio carico utile dopo il terminatore nullo.
Quale sarebbe la strategia per sfruttare questo binario allora?