linux user group brescia

immagine del castello

Archivio della mailing list

R: R: Archivio di /var/log/wtmp

Luca Coianiz lcoianiz a w3.to
Mar 7 Nov 2000 18:29:52 UTC
From: Enrico Colombini <erix a mclink.it>
>> Mi rendo conto che è un argomento delicato (soprattutto per una ML
>>pubblica) ma... sapresti spiegarmi cosa cavolo è un "exploit" o come è
>>possibile sfruttare un buffer overflow ?
> int InputNome(void)
> {
>   char nome[150];
>   printf("Nome: ");
>   gets(nome);
>   ...
> }
> Il programmatore (pigro o mediocre) ha previsto 150 caratteri per
> contenere il nome, piu' che sufficienti... a meno che qualcuno
> non decida di scriverne di piu',
> nel qual caso i rimanenti 'sfondano' il buffer nome[] e
> possono sovrascrivere altre variabili o l'indirizzo di ritorno di una
> funzione.

 Capito. Mi dimentico sempre che in C devi controllare tutto a mano e che
non c'è nessun controllo "automatico" che ti butta fuori dal programma per
"buffer overflow error".

> In quest'ultimo caso, scegliendo accuratamente i caratteri, nel
> momento in cui la funzione cerca di ritornare (usando l'indirizzo che
c'era
> nello stack) e' possibile eseguire un jmp (goto) al punto desiderato del
> programma oppure far eseguire del codice arbitrario.

 In pratica i caratteri aggiuntivi "diventano" il nuovo indirizzo sullo
stack e/o il nuovo segmento di programma eseguibile se ho ben capito (anche
dalle spiegazioni del Giuzzi e degli altri).

        Bye
        Sky





Maggiori informazioni sulla lista Lug