? Buffertöverskridningar och format buggar string finns två metoder där användare kan få kontroll över ett program . Normalt återfinns i lägre nivå språk som C eller C + + , både beroende på en hacker förmåga att manipulera användarens input för att göra ett program utföra på annat sätt än den är avsedd för . Buffertöverskridningar åberopa bristande säkerhetsåtgärder runt användarens input , medan formatsträngssårbarheter buggar uppstå inom själva input /output -funktionalitet i ett programmeringsspråk . Att förstå hur varje verk kräver en förståelse för varför de uppstår i koden . Buffert överskridande
En buffertöverskridning kan inträffa under programkörning när en buffert datastruktur tänkt att hantera indata ges för mycket data att hantera . Till exempel kan en programmerare deklarerar en array struktur som innehåller tecken att ta in användarens inloggningsuppgifter . Programmeraren kan välja att begränsa storleken på arrayen till 25 tecken . Om programmeraren inte sätta några garantier på plats , kan användaren ange en godtycklig mängd data som inloggningsnamn . När användaren gör detta , de extra tecken utöver 25 överskridande minne av uppställningen och korrupta data i intilliggande minnesplatser . Detta kallas en buffertöverskridning .
Buffertöverskridningar och Säkerhet
Hackers
kan dra nytta av buffertöverskridningar att ändra sökvägen till programmets genomförande . Om en hacker vet hur ett program fungerar , då hon vet också vilka typer av uppgifter är nära karaktären array . I C -programmering är variabler och referenser funktion som lagrats i minnet . Om en variabel eller funktion referens bosatt nära arrayen , kan en hacker överskridande arrayen på ett sådant sätt att ändra värdet på en variabel , så att den kommer att tillåta Logga in med falska referenser . Hackaren kan också ändra en funktion så att det utför skadlig kod , och gör det möjligt för hackare in i systemet .
Format Strings
A " format string " utgör ett särskilt argument tillförs input och output funktioner i C. till exempel tar det " printf ( ) " -funktion som sitt första argument ett format sträng som beskriver hur produktionen ska se ut för användaren . Efter detta tar printf ( ) -funktionen en variabel lista med argument som representerar data som matas ut som formaterats med formatet strängen . Detta följande exempel beskriver hur ett format sträng fungerar i sitt sammanhang , med ett format sträng som innehåller ett format karaktär ( " % d " ) , som innebär att ett heltal argument kommer att ersätta det tecken i utdata :
printf ( " Det här är format strängen , följt av ett heltal för att skriva ut % d " , 56 ) ;
formatsträngar och Säkerhet
formatsträngar säkerhetsfrågor uppstår när en användare lyckas mata in ett format sträng som innehåller formatering tecken avsett inte av programmeraren . När en printf ( ) anropas , det formatet sträng och argumenten efter skjuts in i minnet , och funktionen " går " genom minnet , ersätter alla formateringstecken med värden i motsvarande minnesplatser . Om en hacker skär formatera tecken i en sträng , kan hon läsa möjligen värdena av data som finns någonstans i närheten på stacken - och om hon kan läsa bunten , hon vet hur och var man byter uppgifter och manipulera programkörningen
. Addera ditt