Comportamento dello stack durante la chiamata di funzione durante un exploit stringa di formato

2

Ho alcuni problemi nel tentativo di risolvere un gioco di guerra con una vulnerabilità della stringa di formato. Quindi ecco il codice del programma:

#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);
}

Quindi puoi vedere il codice smontato e presumo che la chiamata a 0x80484fb sia la chiamata alla funzione vulnerabile.

Innanzitutto, non capisco perché ci siano già quei valori da 0xbffff834 a 0xbffff84c sullo stack. In effetti, il valore in cima allo stack (aggiunto in 0x80484f8 nel thread principale) sembra essere l'argomento passato alla funzione printf ma non so quali siano gli altri valori passati prima.

La seconda cosa che non capisco è perché il risultato non mostra l'indirizzo 0xbffff840 e inizia a stampare 0xbffffe1b . Credo che il %x stamperebbe il primo valore dello stack e poi il secondo e procederà in questo modo.

    
posta Nebalicien 12.04.2018 - 13:02
fonte

0 risposte

Leggi altre domande sui tag