Protección de canarios de pila y ROP

6

Hasta donde sé, los canarios de pila son valores escritos en la pila que, si se sobrescriben con un desbordamiento de búfer, obligan a la aplicación a cerrarse en la devolución.

Mi pregunta es: si sobrescribo tanto el EIP como la pila porque quiero ROPAR algo ... y NUNCA vuelvo ... ¿los canarios de pila también crean un problema?

    
pregunta John Smith 24.10.2012 - 19:01
fuente

2 respuestas

3

Un canario de pila sigue siendo un problema, porque no puede controlar el EIP en un desbordamiento de búfer basado en pila sin sobrescribir la dirección de retorno (que está por encima de carny). Además, la función que contenía el desbordamiento de búfer basado en la pila debe volver antes de que la dirección de retorno dañada se convierta en el nuevo EIP.

Esto no es un problema para los punteros colgantes.

¡Debes pasar más tiempo con tu depurador! No hay excusa para esto. ¡Si hubieras pasado por el proceso de explotación, lo sabrías!

    
respondido por el rook 24.10.2012 - 19:25
fuente
2

En algunos casos de desbordamiento puede sobrescribir el EIP, pero no toca el valor canario. Aquí está la cita del libro "Una guía para la explotación del núcleo: atacando el núcleo" por Enrico Perla:

  

Un canario de pila es un buen esquema de protección, pero tiene algunos problemas: un desbordamiento particularmente controlado (por ejemplo, un desbordamiento basado en índices en una matriz guardada en la pila) puede escribir más allá del canario sin tocarlo.

    
respondido por el Yury Kochubeev 24.10.2016 - 21:54
fuente

Lea otras preguntas en las etiquetas