int main () {
char LOGIN_NAVN [ 20]
printf (" Indtast login : ");
scanf ( "% s " , LOGIN_NAVN ),
printf (" Buffer Overflow ")
}
! denne grundlæggende kode opretter en karakter array ( et ord , hovedsageligt ) kaldet " LOGIN_NAVN " , der vil holde brugerinput. Bemærk , at " LOGIN_NAVN " er kun 20 tegn. Programmet spørger derefter for bruger-input, og gemmer oplysningerne i " LOGIN_NAVN ".
2
Årsag buffer overflow . Kompilere programmet , og køre den. Når du bliver bedt om at indtaste et brugernavn , der overstiger 20 tegn. For eksempel : Hej
Indtast login : ". . Enter" Dette er en lang sætning, VIL OVERRUN den tilgængelige plads i Login VARIABLE
Hit Udgangen besked udskrives , og programmet vil opsige . Variablen har overskredet den tilgængelige buffer plads i " LOGIN_NAVN " variable . Spørgsmålet er så , hvad skete der?
3
Forstå hvordan computerens hukommelse virker. Når brugeren input blev gemt i " LOGIN_NAVN ", den overskydende oplysninger ( enhver karakter ud over 20 tegn) er skrevet på hukommelsen ud over grænserne for variablen. Disse data skal opbevares et sted. I dette tilfælde er det lagres i hukommelsen umiddelbart støder op til hvor " LOGIN_NAME " variablen er placeret. Ved at gå over grænserne for login variable , genskriver de ekstra data ( bevidst eller ej) dataene umiddelbart ved siden variablen. Det betyder, at hackeren dybest set kunne omskrive koden , og ændre, hvordan koden virker det væsentlige eje systemet.
4
Indse Linux sårbarheder. Linux er kodet i C /C + +, og mange af dens kerne funktionalitet kræver manipulation af tegnstrenge . Men mange moderne distributioner af Linux beskytte mod forekomster af buffer overflow på steder, hvor brugeren input er påkrævet, enten gennem stakken beskyttelse eller dynamisk resizing tegndatatabeller . Sårbarheder findes stadig : USB buffer overflow exploit opdaget i 2011 er et eksempel. I USB tilfælde kan en ekstra lang USB ID overflow et system variabel i Linux.