I edb-sikkerhed og programmering, en buffer overflow, eller bufferoverløb, er en anomali, hvor et program, mens du skriver data til en buffer, overskridelser bufferens grænsen og overskriver tilstødende hukommelse. Dette er et særligt tilfælde af overtrædelse af hukommelse sikkerhed. Bufferoverløb kan udløses af input, der er designet til at udføre kode, eller ændre den måde, programmet fungerer. Dette kan resultere i uregelmæssig program adfærd, herunder hukommelse adgang fejl, forkerte resultater, et nedbrud eller en overtrædelse af systemets sikkerhed.
De er således basis af mange software sårbarheder og kan skadeligt udnyttes. Programmeringssprog ofte forbundet med bufferoverløb omfatter C og C ++, som giver ingen indbygget beskyttelse mod adgang til eller overskrive data i nogen del af hukommelsen og ikke automatisk kontrollere, at data, skrevet til et array (den indbyggede buffer type) er inden for grænserne for den opstilling. Kontrol af grænser kan forhindre bufferoverløb.
Jeg ved, at du har en masse spørgsmål Hvad er grunden til denne skøre fejl? > Det er en fejl i programmeringen (Skrivning koder) Er det vigtigt at lære.
; det er bare små dumme udnytte? > denne type udnytte hvordan gøre forskellen mellem professionelle Hackere og normale hackere. Jeg vil forklare, at i Lektion 4;). Kan u give mig en Teknisk beskrivelse En buffer overflow opstår, når data skrevet til en buffer, på grund af utilstrækkelig kontrol af grænser, korrumperer dataværdier i hukommelsesadresser støder op til den tildelte buffer. Mest almindeligt dette sker ved kopiering tegnstrenge fra en buffer til en anden.
Grundlæggende eksempel I det følgende eksempel, har et program defineret data to punkter, der er tilstødende i hukommelsen: en 8 byte-lang streng buffer, A, og en to-byte heltal, B. I første omgang A indeholder intet andet end nul bytes, og B indeholder nummer 1979. Tegn er en byte brede. variabelnavn AB værdi [null string] 1979 hex værdi 00 00 00 00 00 00 00 00 07 BB nu, forsøger programmet at gemme den null-afsluttet streng "overdreven" i en buffer.
Ved ikke at kontrollere længden af strengen, det overskriver værdien af B: variabelnavn AB værdi "e" 'X' 'c' 'e' 's' 's' 'Jeg' 'v' 25856 hex 65 78 63 65 73 73 69 76 65 00 Selv programmøren ikke havde til hensigt at ændre B overhovedet, har B værdi nu blevet erstattet af en række dannet af en del af strengen tegnet. I dette eksempel på en stor-endian system, der bruger ASCII, ville "e" efterfulgt af et n