No se puede hacer funcionar un simple shellcode code [cerrado]

-2

Solo intento ejecutar shellcode directamente desde la línea de comandos. Envío un simple 0x90 NOP y obtengo un error de segmentación.

root@server:~# gcc shellcode.c -o shellrun -fno-stack-protector -z execstack

root@server:~# ./shellrun 'perl -e 'print "\x90"''
Segmentation fault (core dumped)

root@server:~# more shellcode.c
int main(int argc, char *argv[])
{
        (*(void(*)())argv[1])();
        return 0;
}
    
pregunta anonymous 30.11.2014 - 06:17
fuente

2 respuestas

-2

Do xor 0 y exit () linux syscall en lugar de nop, ya que argv finaliza con un código de operación de byte nulo, esa es la causa de segfault

    
respondido por el Harry 01.12.2014 - 03:35
fuente
6

En el ejemplo propuesto, el programa está ejecutando un sled nop que consiste en \x90 . Después de que este nop sled se ejecuta, no vuelve a main, y por lo tanto se bloquea con un Segmentation fault .

Considere aprender más ensamblador, y lo más importante, use GDB para depurar fallas de segmentación .

    
respondido por el rook 30.11.2014 - 18:39
fuente

Lea otras preguntas en las etiquetas