Shellcode no se ejecuta

Intenté ejecutar muchos códigos de shell a través del programa C para probarlos. Aquí está

#include<stdio.h>
#include<string.h>
unsigned char code[] = "shell here";
main()
{
printf("Shellcode Length: %d\n", strlen(code));
int (*ret)() = (int(*)())code;
ret();
}

Y aquí hay un ejemplo de shellcode

"\x31\xc0\xb0\x46\x31\xdb\x31\xc9\xcd\x80\xeb"\
          "\x16\x5b\x31\xc0\x88\x43\x07\x89\x5b\x08\x89"\
          "\x43\x0c\xb0\x0b\x8d\x4b\x08\x8d\x53\x0c\xcd"\
          "\x80\xe8\xe5\xff\xff\xff\x2f\x62\x69\x6e\x2f"\
          "\x73\x68\x58\x41\x41\x41\x41\x42\x42\x42\x42"

(\ bin \ cat \ etc \ shadow) Después de ejecutar

gcc sctest.c -o out ./out

Simplemente me da la longitud del código de shell y la falla de segmentación. Ya he probado muchos códigos de shell diferentes, pero todo me da seguridad. Mi dmesg | cola -1 [18440.783383] prueba [8768]: segfault en 8049700 ip 08049700 sp bffff2ec error 15 en la prueba [8049000 + 1000] ¿Qué hay de malo en mis códigos de shell?

Respuestas a la pregunta(1)

Su respuesta a la pregunta