¿Cómo exactamente el código vulnerable de la cadena de formato lee los datos de la pila?

2

Si tenemos un código como printf(buffer) donde el usuario puede controlar el búfer, entiendo que el usuario podría insertar algo como AAAA% 08x% 08x% 08x ... y obtendría el contenido de una parte como resultado. de la pila.

Entiendo que esto se debe a que el usuario puede engañar a printf creyendo que tiene que procesar más argumentos de los que realmente se proporcionan y, por lo tanto, lo engaña para que lea datos de la pila donde deberían haber estado los argumentos.

Pero, dado que los argumentos para printf se insertan en la pila antes de llamar a la función con la cadena de formato pasada, ¿cómo es posible que printf también lea la parte "AAAA" de la entrada del usuario de la pila? ¿No tendría acceso a los argumentos "no existentes" como EBP + 12, EBP + 16, EBP + 20 ... y, por lo tanto, leer los datos solo más arriba en la pila (en direcciones de memoria más altas)?

    
pregunta pineappleman 16.04.2016 - 01:03
fuente

0 respuestas

Lea otras preguntas en las etiquetas