Stack Overflow
Leer & oefen AWS Hacking:HackTricks Opleiding AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking:
HackTricks Opleiding GCP Red Team Expert (GRTE)
Wat is 'n Stapel Oorloop
'n stapel oorloop is 'n kwesbaarheid wat voorkom wanneer 'n program meer data na die stapel skryf as wat dit toegeken is om te hou. Hierdie oortollige data sal aangrensende geheue ruimte oorskryf, wat lei tot die korrupsie van geldige data, onderbreking van die beheerstroom, en moontlik die uitvoering van kwaadwillige kode. Hierdie probleem ontstaan dikwels as gevolg van die gebruik van onveilige funksies wat nie grensekontrole op invoer uitvoer nie.
Die hoofprobleem van hierdie oorskrywing is dat die gestoor instruksie-aanwyser (EIP/RIP) en die gestoor basisaanwyser (EBP/RBP) om na die vorige funksie terug te keer, op die stapel gestoor word. Daarom sal 'n aanvaller in staat wees om dit te oorskryf en die uitvoeringsvloei van die program te beheer.
Die kwesbaarheid ontstaan gewoonlik omdat 'n funksie meer bytes binne die stapel kopieer as die hoeveelheid wat daarvoor toegeken is, en kan dus ander dele van die stapel oorskryf.
Sommige algemene funksies wat kwesbaar is hiervoor is: strcpy
, strcat
, sprintf
, gets
... Ook, funksies soos fgets
, read
& memcpy
wat 'n lengte argument neem, kan op 'n kwesbare manier gebruik word as die gespesifiseerde lengte groter is as die toegeken.
Byvoorbeeld, die volgende funksies kan kwesbaar wees:
Vind van Stap Oorloop verskuiwings
Die mees algemene manier om stap oorloop te vind, is om 'n baie groot invoer van A
s te gee (bv. python3 -c 'print("A"*1000)'
) en 'n Segmentation Fault
te verwag wat aandui dat die adres 0x41414141
probeer is om toegang te verkry.
Boonop, sodra jy gevind het dat daar 'n Stap Oorloop kwesbaarheid is, sal jy die verskuiwing moet vind totdat dit moontlik is om die terugadres te oorskry, hiervoor word gewoonlik 'n De Bruijn-sekwensie gebruik. Wat vir 'n gegewe alfabet van grootte k en subreekse van lengte n 'n sikliese sekwensie is waarin elke moontlike subreeks van lengte _n_** presies een keer** as 'n aaneengeskakelde subreeks verskyn.
Op hierdie manier, in plaas daarvan om handmatig uit te vind watter verskuiwing nodig is om die EIP te beheer, is dit moontlik om een van hierdie sekwensies as opvulling te gebruik en dan die verskuiwing van die bytes wat dit oorgeskryf het, te vind.
Dit is moontlik om pwntools hiervoor te gebruik:
of GEF:
Exploiting Stack Overflows
Tydens 'n oorgang (as die oorgang grootte groot genoeg is) sal jy in staat wees om oor te skryf waardes van plaaslike veranderlikes binne die stapel totdat jy die EBP/RBP en EIP/RIP (of selfs meer) bereik. Die mees algemene manier om hierdie tipe kwesbaarheid te misbruik, is deur die terug adres te verander sodat wanneer die funksie eindig, die beheer vloei na waar die gebruiker gespesifiseer het in hierdie pointer.
egter, in ander scenario's mag dit net om te skryf van sommige veranderlikes waardes in die stapel genoeg wees vir die uitbuiting (soos in maklike CTF uitdagings).
Ret2win
In hierdie tipe CTF uitdagings, is daar 'n funksie binne die binêre wat nooit aangeroep word en wat jy moet aanroep om te wen. Vir hierdie uitdagings moet jy net die offset vind om die terug adres te oorskryf en die adres van die funksie vind om aan te roep (gewoonlik ASLR sal gedeaktiveer wees) sodat wanneer die kwesbare funksie terugkeer, die verborge funksie aangeroep sal word:
Ret2winStack Shellcode
In hierdie scenario kan die aanvaller 'n shellcode in die stapel plaas en die beheerde EIP/RIP misbruik om na die shellcode te spring en arbitrêre kode uit te voer:
Stack ShellcodeROP & Ret2... tegnieke
Hierdie tegniek is die fundamentele raamwerk om die hoof beskerming van die vorige tegniek te omseil: Geen uitvoerbare stapel (NX). En dit stel in staat om verskeie ander tegnieke (ret2lib, ret2syscall...) uit te voer wat arbitrêre opdragte sal uitvoer deur bestaande instruksies in die binêre te misbruik:
ROP - Return Oriented ProgramingHeap Overflows
'n Oorgang gaan nie altyd in die stapel wees nie, dit kan ook in die heap wees byvoorbeeld:
Heap OverflowTypes of protections
Daar is verskeie beskermings wat probeer om die uitbuiting van kwesbaarhede te voorkom, kyk daarna in:
Common Binary Exploitation Protections & BypassesLearn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Last updated