Intentando aterrizar un shell en un servicio remoto

1

Aquí está el escenario, parte de un ejercicio de tipo wargame / CTF. Existe un programa vulnerable que se ejecuta como un servicio en el host remoto. Tengo acceso a una copia del binario, que tiene un desbordamiento de pila de un scanf sin marcar.

Soy capaz de desencadenar el código de desbordamiento y ejecución, pero tengo problemas para averiguar qué usar para la dirección de retorno. Si ejecuto el binario en mi máquina de prueba, solo puedo obtener un shell si conozco aproximadamente la dirección de mi shellcode en la pila. En el momento del desbordamiento, ninguno de los registros contiene la ubicación del shellcode. Mi idea era que debería poder forzar la dirección de retorno, pero eso no ha funcionado ni en mi instancia de prueba (ASLR desactivado) ni en el servicio remoto (estado ASLR desconocido).

    
pregunta Tyler 06.02.2012 - 23:09
fuente

1 respuesta

2

Intente obtener toda la información que pueda sobre la máquina remota y cópiela en su instancia de prueba. La máquina remota probablemente esté ejecutando una versión ligeramente diferente del sistema operativo, como una versión o un nivel de parche diferente o, a veces, incluso un paquete de idioma que podría deshacerse de las direcciones. También podría haber una diferencia de 32 bits frente a 64 bits. Usar una dirección de retorno que esté dentro del propio código / sección de datos de la aplicación también puede ayudar con eso.

Si su instancia de prueba coincide con el software del objetivo a la perfección, entonces, si tuvo que deshabilitar ASLR en la instancia de prueba manualmente, entonces hay una buena probabilidad de que esté habilitado en el objetivo.

También, intente usar un gran trineo NOP (cadena de 0x90 o instrucciones sin operación) para no tener que tener la dirección de memoria exacta. Podrías estar fuera por algún número de bytes, pero mientras aterrices en el trineo, golpearás el código del shell.

¡Buena suerte!

    
respondido por el chrisbdaemon 04.05.2012 - 18:28
fuente

Lea otras preguntas en las etiquetas