Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
Vytvorenie vyrovnávacej pamäti . Postupujte podľa tohto príkladu : Spojené
# include int main ( ) { char login_name [ 20 ] ; printf ( " Zadajte login : " ) ; scanf ( " % s " , login_name ) ; printf ( " Buffer Overflow " ) ; } tento základný kód vytvorí pole znakov ( slovo , v podstate ) s názvom " login_name " , ktorá sa bude držať vstup užívateľa . Všimnite si , že " login_name " je iba 20 znakov . Program potom požiada o vstup užívateľa , a ukladá informácie do " login_name . " Pretože sa pretečeniu vyrovnávacej pamäti . Zostaviť program a spustite ho . Ak budete vyzvaní , zadajte prihlasovacie meno , ktoré presahuje 20 znakov . Napríklad : Zadajte login : TOTO JE DLHÁ vetu , ktorá obsadí dostupného priestoru v prihlasovacom PREMENNÉ Hit . " Enter . " Výstupná správa bude tlačiť a program bude ukončený . Premenná prekročil dostupnej vyrovnávacej pamäte v " login_name " premenné . Otázkou potom je , čo sa stalo ? Pochopiť , ako funguje pamäť počítača . Ako vstup užívateľa bola uložená v " login_name , " prebytok informácie ( ľubovoľný znak okrem 20 znakov ) , bol napísaný v pamäti mimo hraníc premenné . Tieto dáta musia byť uložené niekde . V tomto prípade , sa uloží do pamäte bezprostredne priľahlé k miestu , kde sa nachádza " login_name " premenné . Tým , že ide cez hranice prihlasovacie premenné , extra údaje ( úmyselne alebo neúmyselne ) prepisuje dáta bezprostredne vedľa premenné . To znamená , že hacker mohol v podstate prepísať kód , a zmeniť to, ako kód funguje, v podstate vlastný systém . Uvedomte si , Linux zraniteľnosť . Linux je kódovaný v C /C + + , a mnoho z jeho základná funkcia vyžaduje manipuláciu znakových reťazcov . Avšak , mnoho moderných distribúcií Linuxu ochranu proti inštancií pretečeniu vyrovnávacej pamäte v miestach , kde sa vyžaduje vstup užívateľa , a to buď prostredníctvom ochrany zásobníka alebo dynamicky veľkosti znakové pole . Stále ešte existujú slabé miesta : buffer overflow USB exploit objavil v roku 2011 , je jedným z príkladov . V prípade USB , extra dlhý USB ID môže pretiecť systémovú premennú v Linuxe .
2
3
4