L'exploit semplice porta a EIP ed EBP errati

3

Ho un semplice programma:

void bug(char *arg1)
{
    char name[128];
    strcpy(name, arg1);
    printf("Hello %s\n", name);
}

int main(int argc, char **argv)
{
    if (argc < 2)
    {
        printf("Usage: %s <your name>\n", argv[0]);
        return 0;
    }

    bug(argv[1]);
    return 0;
}

Macchina: Ubuntu 14.04.1 32-Bit / gcc version 4.8.2

Il file compilato con -fno-stack-protector e ALSR è disattivato

Questo è ciò che ottengo dopo aver provato ad eseguirlo da gdb:

Quello che mi aspettavo è vedere l'EIP impostato su 0x43434343 e EBP su 0x42424242 , ma vediamo che entrambi sono 0x41414141

Per favore aiuto. Cosa c'era di sbagliato?

    
posta user1826382 30.07.2015 - 20:17
fonte

1 risposta

2

Scopriamo semplicemente che GCC esegue allineamenti su variabili locali (stack). Un documento che potrebbe darti un'idea di questo concetto è il seguente: Assegnazione ottimale dello slot dello stack in GCC

    
risposta data 31.07.2015 - 04:52
fonte

Leggi altre domande sui tag