Stack buffer-overflyter
Forstå stakkens oppbygning, overskriv EIP/RIP, og skriv en fungerende exploit for en sårbar C-binærfil.
Stack buffer-overflyter er en gratis leksjon i Cyber Security Academy på CoddyKit. Dette er leksjon 1 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Cyber Security Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Cyber Security Academy inneholder totalt 4 leksjoner.
Hva er et bufferoverløp?
Et bufferoverløp oppstår når mer data skrives til en buffer enn den har plass til. Overskytende data overskriver tilstøtende minne og kan dermed ødelegge kontrollstrukturer og omdirigere programmets kjøring.
Minnelayout for stacken
Call stacken inneholder: lokale variabler (buffere), lagret frame-peker (SFP) og returadressen (RIP/EIP) — stedet der kjøringen fortsetter etter at funksjonen returnerer. Et lokalt bufferoverløp kan overskrive returadressen.
Klassisk stack smashing
Hvis et program kaller gets() eller strcpy() uten lengdekontroll, kan en angriper skrive inn nok byte til å fylle bufferen og overskrive returadressen med adressen til shellcode eller en nyttig gadget.
// Vulnerable C code:
void vuln() {
char buf[64];
gets(buf); // No bounds checking!
}Finne forskyvningen
Finn ut hvor mange byte som når returadressen, ved å generere et mønster:
# Generate a cyclic pattern:
python3 -c "from pwn import *; print(cyclic(200))" | ./vuln
# After crash, find offset:
python3 -c "from pwn import *; print(cyclic_find(0x61616166))"Beskyttelser: stack-canaries
En stack-canary er en tilfeldig verdi som plasseres mellom lokale variabler og den lagrede returadressen. Før retur kontrolleres canary-verdien — hvis den er overskrevet, avsluttes programmet. Den må omgås for å utnytte klassiske bufferoverløp.
Beskyttelser: ASLR
Tilfeldiggjøring av adresseromslayout (ASLR) randomiserer basisadressen til stacken, heapen og biblioteker ved hver kjøring. Uten en lekkasje av en aktuell adresse er det i praksis umulig å gjette hvor det skal hoppes på 64-bits-systemer.
Beskyttelser: NX/DEP
NX (No-Execute) / DEP (Data Execution Prevention) markerer stacken som ikke-kjørbar. Shellcode som er injisert i bufferen, kan ikke kjøres direkte. Dette tvinger angripere til å bruke Return-Oriented Programming (ROP).
Lekke adresser
For å omgå ASLR trenger angripere en informasjonslekkasje: formatstrengsårbarheter, overlesing av heapen (som Heartbleed) eller en lesbar peker i den utnyttede funksjonen. Én lekket adresse avslører forskyvningen og gjør det mulig å beregne andre adresser.
Skrive en grunnleggende exploit
En grunnleggende 32-bits stack-overflyt uten beskyttelser:
# Python exploit skeleton (pwntools):
from pwn import *
p = process("./vuln")
offset = 76
shellcode = asm(shellcraft.sh())
payload = shellcode + b"A" * (offset - len(shellcode)) + p32(stack_addr)
p.sendline(payload)
p.interactive()ret2libc-teknikken
ret2libc omgår NX ved å returnere til funksjoner i libc (for eksempel system()) i stedet for shellcode. Angriperen overskriver returadressen med adressen til system og sender "/bin/sh" som argument.
Verktøy for exploitutvikling
Viktige verktøy:
- pwntools — Python-bibliotek for exploits
- GDB + pwndbg/peda — feilsøker med hjelpefunksjoner for exploits
- checksec — viser binærfilens beskyttelser
- ROPgadget / ropper — finner ROP-kjeder
checksec --file=./vulnHurtigsjekk: Stack-overflyt
Hvilken beskyttelse legger en tilfeldig verdi mellom lokale variabler og den lagrede returadressen, og avslutter programmet hvis den overskrives?
Oppsummering av leksjonen
Stack-overflyter overskriver returadressen ved å fylle en buffer forbi grensene sine. Beskyttelser omfatter stack canaries (oppdager overskrivinger), ASLR (randomiserer adresser) og NX/DEP (ikke-kjørbar stack). ret2libc omgår NX. Informasjonslekkasjer omgår ASLR. pwntools effektiviserer exploitutvikling.
Lær deg Cyber Security Academy med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 76
- Leksjoner
- 303
Ofte stilte spørsmål
Er leksjonen «Stack buffer-overflyter» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Cyber Security Academy, inkludert «Stack buffer-overflyter», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Cyber Security Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «Stack buffer-overflyter»?
Forstå stakkens oppbygning, overskriv EIP/RIP, og skriv en fungerende exploit for en sårbar C-binærfil. Du øver på Cyber Security Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Cyber Security Academy?
Ingen tidligere erfaring er nødvendig. Cyber Security Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.
Hvor lang tid tar leksjonen «Stack buffer-overflyter»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Cyber Security Academy-leksjonen?
Ja. Alle Cyber Security Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Stack buffer-overflyter
- Return-Oriented Programming (ROP)
- Sårbarheter i formatstrenger
- Heap-utnyttelse: Use-After-Free og heap spraying