Sto imparando lo sfruttamento e ho scaricato alcuni shellcode execve ("/ bin / sh") da exploit-db per usarlo in un semplice esempio di buffer overflow. Quando eseguo il programma ricevo un errore di segmentazione. Sto eseguendo questo su kali linux in vmware.
Ecco il codice:
#include<stdio.h>
#include<string.h>
const char sc[] = \
"\x01\x30\x8f\xe2\x13\xff\x2f\xe1"
"\x03\xa0\x52\x40\xc2\x71\x05\xb4"
"\x69\x46\x0b\x27\x01\xdf\x7f\x40"
"\x2f\x62\x69\x6e\x2f\x73\x68\x41";
void main()
{
printf("Shellcode Length: %d\n", strlen(sc));
((void(*)(void))sc)();
}
Ecco come è compilato:
gcc -z execstack -fno-stack-protector shell.c -o shell
- Potrebbe essere causato eseguendolo su vmware?
- È possibile che ci sia qualcosa di sbagliato nello shellcode, ma sto ricevendo SIGSEGV invece di SIGILL?
- C'è qualcosa di sbagliato nel modo in cui eseguo il codice in questo programma C?