Het vollopen en format string bugs zijn twee manieren waarop gebruikers kunnen de controle over een programma te krijgen . Doorgaans te vinden in een lager niveau talen zoals C of C + + , beiden vertrouwen op het vermogen van een hacker om input van de gebruiker te manipuleren om een programma uit te voeren op andere manieren dan het is bestemd . Bufferoverruns rekenen op een gebrek aan veiligheidsmaatregelen rond input van de gebruiker , terwijl de format string bugs voordoen binnen de werkelijke input /output functionaliteit van een programmeertaal . Begrijpen hoe elke werkt vereist een begrip van waarom ze zich voordoen in de code . Bufferoverloop Een bufferoverloop kunnen optreden tijdens de uitvoering van het programma als een buffer datastructuur bedoeld om invoer van de gebruiker verwerken krijgt te veel gegevens te verwerken . Zo kan een programmeur een array declareren structuur die personages te nemen aan de gebruiker log - in gegevens . De programmeur kan kiezen om de grootte van de matrix te beperken tot 25 tekens . Als de programmeur geen garanties in te voeren , kan de gebruiker een willekeurige hoeveelheid gegevens in te voeren als een inlognaam . Wanneer de gebruiker dit doet , de extra personages voorbij 25 een overschrijding van de geheugenruimte van de array en corrupte data in aangrenzende geheugenlocaties . Dit heet een bufferoverloop . Bufferoverruns en Veiligheid Hackers kunnen profiteren van bufferoverruns om het pad van de uitvoering van het programma te veranderen . Als een hacker weet hoe een programma werkt , dan weet ze ook welke soorten gegevens zijn in de buurt van het karakter array. In C-programmeertaal , worden variabelen en functie referenties opgeslagen in het geheugen . Als een variabele of functieverwijzing bevindt nabij de array kan een hacker de array overschrijding op zodanige wijze dat de waarde van een variabele te wijzigen , zodat het mogelijk aanmelden met valse referenties . De hacker kan ook een functie te veranderen zodat het virus kwaadaardige code , en laat de hacker in het systeem . Formaat Strings Een " format string" vertegenwoordigt een om input en output functies in C. bijvoorbeeld geleverd bijzonder argument , de " printf ( ) " functie neemt als eerste argument een format string , dat beschrijft hoe de uitgang moet zien aan de gebruiker . Na deze , de printf ( ) functie neemt een variabele lijst met argumenten die uit te voeren gegevens zoals opgemaakt door de format string . Dit volgende voorbeeld beschrijft hoe een format string werkt in verband met een format string met een format karakter ( " % d " ) , die betekent dat een integer argument dat karakter zal vervangen in de output : printf ( " Dit wordt het format string , gevolgd door een geheel getal af te drukken % d " , 56 ) ; format Strings en veiligheid format string veiligheidsproblemen optreden wanneer een gebruiker erin slaagt om ingang een format string bevattende opmaakteken niet bedoeld door de programmeur . Wanneer een printf ( ) -functie wordt aangeroepen , de format string en de argumenten na te zijn geduwd in het geheugen , en de functie " loopt " door het geheugen , het vervangen van alle opmaak tekens met waarden in overeenkomstige geheugenlocaties . Als een hacker voegt formatteren karakters in een string , kan ze misschien lezen de waarden van gegevens die zich ergens in de buurt op de stapel - en als ze de stapel kan lezen , ze weet hoe en waar om gegevens te wijzigen en te manipuleren uitvoering van het programma .
|