Creare il buffer . Seguite questo esempio :
# include
int main ( ) { char
nome_login [ 20 ] ;
printf ( " Inserisci login : " ) ;
scanf ( "% s " , login_name ) ;
printf ( " buffer overflow " ) ; }
! questo codice di base crea un array di caratteri ( una parola , essenzialmente) chiamato " nome_login " che conterrà l'input dell'utente . Si noti che " nome_login " è lungo solo 20 caratteri . Il programma quindi richiede l' input dell'utente , e memorizza le informazioni in " login_name . "
2
Causa il buffer overflow . Compilare il programma ed eseguirlo . Quando il richiesto, immettere un nome di accesso che supera i 20 caratteri . Per esempio :
Inserisci login: ". . Enter" Questa è una frase tanto tempo che permetterà di superare lo spazio disponibile nella variabile LOGIN
Hit Il messaggio di uscita viene stampato e il programma terminerà . La variabile ha invaso lo spazio di buffer disponibile nella variabile " login_name " . La domanda allora è: che cosa è successo?
3
capire come funziona la memoria del computer. Come l' input dell'utente è stato immagazzinato in " login_name , " le informazioni in eccesso ( qualsiasi carattere oltre 20 caratteri ) è stato scritto in memoria oltre i limiti della variabile . Tali dati devono essere memorizzati da qualche parte . In questo caso , viene memorizzato nella memoria immediatamente adiacente a cui si trova la variabile " nome_login " . Andando oltre i confini della variabile di login , i dati supplementari ( intenzionalmente o no ) riscrive immediatamente i dati a fianco della variabile . Questo significa che l' hacker potrebbe praticamente riscrivere il codice , e cambiare come il codice funziona , essenzialmente possedere il sistema .
4
Realizzare vulnerabilità di Linux . Linux è codificato in C /C + + , e molte delle sue funzionalità di base richiede la manipolazione di stringhe di caratteri . Tuttavia, molte distribuzioni Linux moderne di protezione contro i casi di overflow del buffer nei punti in cui è richiesto l'input dell'utente , sia attraverso la protezione dello stack o dinamicamente array di caratteri ridimensionamento . Esistono ancora le vulnerabilità : il buffer overflow exploit USB scoperto nel 2011 è un esempio. Nel caso USB , un extra lunga ID USB può causare un overflow di una variabile di sistema in Linux .
networking © www.354353.com