arrow_backWróć do field notes
WEB SECURITY Opublikowano 9 sie 2026

Co to jest przepełnienie bufora? Praktyczne wyjaśnienie

Dowiedz się, jak przepełnienia bufora rzeczywiście działają na rzeczywistym przykładzie C, diagramie stosu i narzędziach, które pozwolą ci to zobaczyć na własne oczy.

Przepełnienie bufora następuje, gdy program zapisuje więcej danych do obszaru pamięci o stałym rozmiarze, niż ten obszar może pomieścić. Dodatkowe bajty wyciekają do sąsiedniej pamięci, a w zależności od tego, co znajduje się obok tego bufora, możesz uszkodzić zmienne, spowodować awarię programu lub całkowicie przejąć przepływ wykonania. To jedna z najstarszych klas błędów w bezpieczeństwie oprogramowania i wciąż pojawia się w CTF, CVE i firmware'u osadzonym dzisiaj.

Wzorzec podatny na atak

Oto klasyczny przykład w C:

#include <string.h>

void greet(char *name) {
    char buffer[64];
    strcpy(buffer, name);
}

int main(int argc, char **argv) {
    greet(argv[1]);
    return 0;
}

strcpy kopiuje każdy ciąg znaków, który mu przekażesz, do buffer, bez sprawdzania granic. Jeśli argv[1] jest dłuższy niż 64 bajty, kopia ciąży się dalej poza koniec tablicy. Na stosie buffer siedzi poniżej innych zmiennych lokalnych, zapisanych rejestrów i ostatecznie adresu powrotu, który mówi CPU, dokąd przeskoczyć po zakończeniu greet(). Jeśli nadpiszesz ten adres powrotu adresem, którym się steruje, kontrolujesz, co uruchomi się następnie.

Dlaczego to wciąż się kompiluje i uruchamia

C i C++ nie przeprowadzają automatycznego sprawdzania granic dla surowych tablic. Funkcje takie jak strcpy, gets, sprintf i strcat chętnie piszą poza koniec bufora, ponieważ dbają tylko o zakończenie znakiem null lub długość źródła, a nie rzeczywisty rozmiar miejsca docelowego. Porównaj to z strncpy lub snprintf, które przyjmują jawny argument rozmiaru i tam się zatrzymują. Podatność nie jest naprawdę

Napisane z pomocą AI, zweryfikowane i opublikowane przez Michal Pilch (CISSP), Korra Studio.

Gotowy na więcej?

To jedna notatka z bazy wiedzy Korra Studio — platforma łączy każdy temat z mentoringiem 1 na 1.

Zacznij za darmoarrow_forward