Exploiting buffer overflow

0

Quando scarico una copia di un programma vulnerabile e provo a sfruttarlo tramite buffer overflow (qualsiasi funzione interna che chiama come payload), funziona. Tuttavia, quando ho realizzato uno stesso tipo di programma vulnerabile in C, non sono in grado di sfruttarlo e non ho idea di cosa possa andare storto. Verifica su gdb Capisco che sono in grado di sovrascrivere l'indirizzo di ritorno nello stack, ma continuo ad avere un errore di segmentazione e il mio indirizzo desiderato non viene eseguito.

Il programma vulnerabile:

#include<stdio.h>

input()
{
    char a[4];

    gets(a);
    puts(a);
}

main()
{
    input();
    printf("\nthis will execute after returning from the function\n");
}


over()
{
    printf("this can only be executed by the hacker");
}

Voglio eseguire la funzione over() e ho usato il payload

printf "aaaaaaaa\xb3\x84\x04\x08" | ./my
    
posta user38257 23.05.2014 - 06:03
fonte

1 risposta

1

Il problema principale con il tuo codice è che non è vulnerabile a un buffer overflow più che probabile dovuto al compilatore (stai usando gcc?) sostituendo gets con fgets

Se superi il codice compilato sopra (con un input malevolo) dovresti vedere cosa intendo.

    
risposta data 28.06.2016 - 20:01
fonte

Leggi altre domande sui tag