Comportamiento de la pila en una llamada de función durante una explotación de cadena de formato

2

Tengo algunos problemas al intentar resolver un juego de guerra con una vulnerabilidad de cadena de formato. Así que aquí está el código del programa:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char ** argv)
{
    char text[1024];
    if(argc!=2)
    {
        printf("Usage : %s <texte>\n",argv[0]);
        exit(0);
    }
    strncpy(text,argv[1],1023);
    printf("Voici votre texte :\n");
    printf(text);
    printf("\n");
    exit(0);
}

Para que pueda ver el código desensamblado y asumo que la llamada a 0x80484fb es la llamada a la función vulnerable.

Primero, no entiendo por qué ya hay esos valores de 0xbffff834 a 0xbffff84c en la pila. De hecho, el valor en la parte superior de la pila (agregado en 0x80484f8 en el hilo principal) parece ser el argumento pasado a la función printf pero no sé cuáles son esos otros valores pasados anteriormente.

La segunda cosa que no entiendo es por qué el resultado no muestra la dirección 0xbffff840 y comienza a imprimir 0xbffffe1b . Pensé que el %x imprimiría el primer valor de la pila y luego el segundo y continuaría así.

    
pregunta Nebalicien 12.04.2018 - 13:02
fuente

0 respuestas

Lea otras preguntas en las etiquetas