int main ( ) {
røye login_name [ 20 ];
printf ( " Tast inn : ");
scanf ( "% s " , login_name ) ;
printf ( " Buffer Overflow ");
}
! denne grunnleggende kode oppretter et tegn array ( et ord , i hovedsak ) kalt " login_name " som vil holde brukerens input. Legg merke til at " login_name " er bare 20 tegn. Programmet spør så for brukeren input, og lagrer informasjonen i " login_name . "
2
Årsak buffer overflow . Kompilere programmet , og kjøre den. Når du blir bedt om angi et brukernavn som overstiger 20 tegn. For eksempel : en
Enter login : . " . Enter" DETTE ER EN LANG setning som VIL OVERRUN den tilgjengelige plassen i login VARIABEL
Hit Avkjørselen meldingen vil skrive ut , og programmet vil opphøre . Variabelen har overkjørt den tilgjengelige buffer plass i " login_name " variable . Spørsmålet er da, hva skjedde?
3
forstå hvordan datamaskinen hukommelsen virker . Som brukerundersøkelser ble lagret i " login_name , " overflødig informasjon ( alle tegn utover 20 tegn) ble skrevet til minne utenfor grensene av variabelen . At data må lagres et sted. I dette tilfellet , blir den lagret i minnet umiddelbart tilstøtende til hvor " login_name " variable er plassert. Ved å gå over grensene til innlogging variabel, omskriver de ekstra data ( bevisst eller ikke ) dataene umiddelbart sammen med variabelen. Dette betyr at hacker kan i utgangspunktet skrive kode , og endre hvordan koden fungerer , i hovedsak eie systemet.
4
Realiser Linux sårbarheter . Linux er kodet i C /C + + , og mange av dens kjerne funksjonalitet krever manipulering av tegnstrenger . Men mange moderne distribusjoner av Linux beskytter mot tilfeller av buffer overflow på punkter hvor brukerundersøkelser er nødvendig, enten gjennom bunken beskyttelse eller dynamisk skalering karakter arrays. Sårbarheter fortsatt finnes: USB- buffer overflow utnytte oppdaget i 2011 er ett eksempel. I USB- saken , en ekstra lang USB ID kan renne over et system variabel i Linux.