Desbordamientos de búfer en el montón frente a la pila

0

Tengo entendido que para explotar con éxito una vulnerabilidad de desbordamiento del búfer basado en la pila, primero debemos desbordar el búfer, sobrescribiendo así el puntero de retorno y obteniendo el control del EIP. Una vez que controlamos EIP, podemos utilizar una instrucción JMP ESP para saltar al principio de nuestra pila, ejecutando nuestro Shellcode (supongamos que DEP o ASLR no están en su lugar solo por simplicidad y por razones teóricas).

Ahora, para el montón, entiendo que los desbordamientos todavía están presentes. Mi pregunta es: ¿La explotación de un desbordamiento de búfer se ve diferente en el montón? Si es así, ¿cuáles son los detalles más finos?

    
pregunta Henry F 07.04.2018 - 01:25
fuente

2 respuestas

2

Con un desbordamiento de pila, si continúa desbordando, se desbordan los vars de los locales, luego los registros guardados, luego la dirección de retorno, los argumentos de la función, luego rellena la pila, tal vez controladores de excepciones, etc. Por lo general, como atacante, de hecho, usas la dirección de retorno sobrescrita para saltar a algún lugar interesante.

Con un desbordamiento de pila, se desborda ... lo que se encuentre más allá de su memoria. En implementaciones de pila antiguas o malas, pueden ser metadatos de pila que pueden proporcionarle, por ejemplo. el poder de escribir cosas en la memoria (que podría utilizar para sobrescribir un puntero de función). En otras implementaciones de pila, tendrá que diseñar un patrón de asignaciones y desasignaciones para obtener la pila en un estado en el que haya una pieza asignada interesante al lado derecho de su memoria. Tal vez un vtable o algún otro puntero de función.

Los desbordamientos del montón son muy específicos para la implementación y la aplicación del montón. En Linux están las técnicas de "casa de ..." porque glibc malloc es una broma (¡lo siento!), En windows el montón se aseguró y se asignó al azar, y hay que esperar que las aplicaciones traigan sus propias implementaciones de montón inseguras a Consigue un 1% más de rendimiento. A menudo lo hacen.

    
respondido por el manduca 07.04.2018 - 06:30
fuente
0

Ganar capacidad de ejecución no es la única manera de explotar un desbordamiento de búfer. El error del corazón es un ejemplo reciente bien conocido de una situación de tipo de desbordamiento de búfer de pila, donde todo lo que el atacante podía hacer era leer más allá del búfer. No escribir ni ganar habilidad de ejecución. enlace

    
respondido por el Timmy Brolin 07.04.2018 - 13:18
fuente

Lea otras preguntas en las etiquetas