A cambio de libc, ¿cómo sabe la dirección del sistema () en una máquina remota?

0

Tengo el siguiente scienarion:

un programa vulnerable que se ejecuta en un servidor y se puede acceder utilizando netcat

Tengo una copia de ese programa localmente y puedo explotarlo localmente usando ROP:

./vuln garbage + &system() + &exit() + &"/bin/sh"

ahora quiero explotarlo de forma remota, así que técnicamente estaría ejecutando este comando:

echo -e "garbage + &system() + &exit() + &/bin/sh" | nc host port

Mi problema es: no sé qué es & system () en la máquina remota. ¿Hay alguna forma de obtenerlo sin fuerza bruta, por ejemplo: probando todas las direcciones de memoria de 0x00000000 - > 0xFFFFFFFF

ps: & exit () es insignificante pero bueno para tener

    
pregunta AK_ 12.05.2014 - 09:19
fuente

1 respuesta

2

Según this reddit post. Se pueden seguir las siguientes formas para obtener la dirección del sistema () en una máquina remota para una posterior explotación de 2 libc.

  1. Sin ASLR: Descubre su versión de libc / msvcrt. Debe (Windows no ofrece garantías, las bibliotecas compartidas de Linux tampoco) se deben cargar en la misma dirección cada vez. Encuentra la dirección del sistema, úsala.
  2. Parcial-ASLR (no PIE): El binario original se cargará en el mismo lugar cada vez (nuevamente, no hay garantías en Windows). Busque la entrada de la función libc / msvcrt en el GOT / IAT, use esa dirección.

  3. Full-ASLR: Necesita una fuga de información.

respondido por el AK_ 15.05.2014 - 08:27
fuente

Lea otras preguntas en las etiquetas