Ret2plt
Last updated
Last updated
Leer & oefen AWS-hacking: HackTricks Opleiding AWS Red Team Expert (ARTE) Leer & oefen GCP-hacking: HackTricks Opleiding GCP Red Team Expert (GRTE)
Die doel van hierdie tegniek sou wees om 'n adres van 'n funksie van die PLT te lek om ASLR te kan omseil. Dit is omdat as jy byvoorbeeld die adres van die funksie puts
van die libc lek, kan jy dan bereken waar die basis van libc
is en afsette bereken om ander funksies soos system
te kan bereik.
Dit kan gedoen word met 'n pwntools
lading soos (van hier):
Merk op hoe puts
(met behulp van die adres van die PLT) geroep word met die adres van puts
wat in die GOT (Global Offset Table) geleë is. Dit is omdat teen die tyd dat puts
die GOT-inskrywing van puts druk, hierdie inskrywing die presiese adres van puts
in die geheue sal bevat.
Merk ook op hoe die adres van main
in die aanval gebruik word sodat wanneer puts
sy uitvoering voltooi, die binêre kode main
weer roep in plaas van om af te sluit (sodat die uitgelekte adres geldig bly).
Merk op hoe dit nodig is dat die binêre kode nie met PIE saamgestel word nie of jy moet 'n lek gevind het om PIE te omseil om die adres van die PLT, GOT en main te weet. Anders moet jy eers PIE omseil.
Jy kan 'n volledige voorbeeld van hierdie omseiling hier vind. Dit was die finale aanval van daardie voorbeeld:
64-bis, ASLR geaktiveer maar geen PIE, die eerste stap is om 'n oorvloei te vul tot by die byte 0x00 van die kanarie om dan puts te roep en dit te lek. Met die kanarie word 'n ROP-gadget geskep om puts te roep om die adres van puts van die GOT te lek en dan 'n ROP-gadget om system('/bin/sh')
te roep.
64-bis, ASLR geaktiveer, geen kanarie, stapeloorvloei in hoof van 'n kindfunksie. ROP-gadget om puts te roep om die adres van puts van die GOT te lek en dan 'n enkele gadget te roep.