Shellcode que falla la segmentación en vmware

1

Estoy aprendiendo sobre explotación, y descargué algunos shellcode execve ("/ bin / sh") de exploit-db para usarlo en un ejemplo simple de desbordamiento de búfer. Cuando ejecuto el programa me sale un error de segmentación. Estoy ejecutando esto en kali linux en vmware.

Aquí está el código:

#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)();
}

Así es como se compila:

gcc -z execstack -fno-stack-protector shell.c -o shell
  1. ¿Puede ser causado por ejecutarlo en vmware?
  2. ¿Es posible que haya algún problema con Shellcode pero obtengo SIGSEGV en lugar de SIGILL?
  3. ¿Hay algún error en la forma en que ejecuto el código en este programa C?
pregunta xoreaxeax 05.12.2018 - 22:25
fuente

1 respuesta

1

Está ejecutando el código de máquina ARM en una máquina x86. Por supuesto que no funcionará. Si está dando SIGSEGV (que ocurre cuando se genera una falla de protección general, #GP (0)) en lugar de SIGILL (que ocurre cuando se encuentra una instrucción ilegal o desconocida) a pesar de haber sido compilada para una arquitectura diferente, entonces las primeras Los bytes del código de shell ARM deben haberse interpretado como un código de máquina x86 legal. El ISA x86 es extremadamente complicado, y cualquier surtido aleatorio de bytes tiene una posibilidad no despreciable de ser x86 técnicamente válido. Si bien puede haber sido decodificado correctamente, hace algo totalmente involuntario, lo que al mismo tiempo provoca una falla de protección general antes de que se alcance cualquier cosa que no pueda interpretarse como x86 válido.

    
respondido por el forest 10.12.2018 - 10:38
fuente

Lea otras preguntas en las etiquetas