¿Es la diferencia entre un elfo cargado y libc un valor constante?

3

Mientras realizaba la explotación binaria y estudiaba el caso cuando ASLR estaba habilitado, noté que podía realizar una explotación confiable al filtrar una dirección de una función en el binario y encontrar la dirección del sistema en libc agregando un desplazamiento constante a esa función .

Así que el binario es, por ejemplo, cargada en 0xb7719000 , la función está en 0xb7719bc7 . libc se carga en 0xb753c000 y el sistema está en 0xb757c190 .

ASLR está habilitado:

$ cat /proc/sys/kernel/randomize_va_space
2

El binario se compila como PIE:

gdb-peda$ checksec
CANARY    : ENABLED
FORTIFY   : disabled
NX        : ENABLED
PIE       : ENABLED
RELRO     : FULL

Mi pregunta se resuelve en torno al hecho de que puedo usar una dirección filtrada en el binario para calcular de manera confiable la dirección del sistema (lo cual fue práctico, pero no entiendo por qué).

¿La diferencia de dirección entre libc y el binario siempre es constante, incluso cuando ASLR está habilitado y para un ejecutable PIE? Uno pensaría intuitivamente, que tanto el binario como el libc serían aleatorios por separado, y por lo tanto no tendrían una diferencia constante.

    
pregunta Benoit Sevens 12.03.2018 - 19:43
fuente

0 respuestas

Lea otras preguntas en las etiquetas