House of Einherjar
Taarifa Msingi
Kanuni
Angalia mfano kutoka https://github.com/shellphish/how2heap/blob/master/glibc_2.35/house_of_einherjar.c
Au kutoka https://guyinatuxedo.github.io/42-house_of_einherjar/house_einherjar_exp/index.html#house-of-einherjar-explanation (inaweza kuhitaji kujaza tcache)
Lengo
Lengo ni kutenga kumbukumbu karibu na anwani yoyote maalum.
Mahitaji
Unda kikundi bandia tunapotaka kutenga kikundi:
Weka pointers kuelekeza kwenye yenyewe ili kuepuka ukaguzi wa usalama
Mwaga kwa kibali cha byte moja na byte tupu kutoka kikundi kimoja kwenda kingine kurekebisha bendera ya
PREV_INUSE
.Eleza katika
prev_size
ya kikundi kilichotumiwa vibaya na byte tupu tofauti kati yake na kikundi bandiaUkubwa wa kikundi bandia lazima pia uwe umewekwa ukubwa sawa kuepuka ukaguzi wa usalama
Kwa kujenga vikundi hivi, utahitaji uvujaji wa kumbukumbu ya heap.
Shambulio
Kikundi bandia
A
kinachotengenezwa ndani ya kikundi kinachodhibitiwa na mvamizi kikionyesha nafd
nabk
kwenye kikundi cha asili kuepuka ulinziVikundi vingine 2 (
B
naC
) vinatengwaKwa kutumia mbali moja katika
B
moja, biti yaprev in use
inasafishwa na data yaprev_size
inabadilishwa na tofauti kati ya mahali ambapo kikundi chaC
kinatengwa, na kikundi bandia chaA
kilichozalishwa awaliHii
prev_size
na ukubwa katika kikundi bandiaA
lazima iwe sawa kuepuka ukaguzi.Kisha, tcache inajazwa
Kisha,
C
inaachiliwa ili iungane na kikundi bandiaA
Kisha, kikundi kipya
D
kinatengenezwa ambacho kitakuwa kuanzia kwenye kikundi cha bandia chaA
na kufunika kikundi chaB
Nyumba ya Einherjar inamalizika hapa
Hii inaweza kuendelea na shambulio la taka la haraka au sumu ya Tcache:
Fungua
B
kuiongeza kwenye taka la haraka / Tcachefd
yaB
inabadilishwa ikifanya ielekee kwenye anwani ya lengo ikitumia kikundi chaD
(kwani inaB
ndani)Kisha, malloc 2 zinafanywa na ya pili itakuwa kutenga anwani ya lengo
Marejeo na mifano mingine
Baada ya kuachilia pointers hawajafutwa, kwa hivyo bado ni rahisi kufikia data zao. Kwa hivyo kikundi kimoja kimewekwa kwenye taka isiyopangwa na kuvuja pointers inayojumuisha (uvujaji wa libc) na kisha kikundi kipya cha heap kinawekwa kwenye taka isiyopangwa na kuvuja anwani ya kikundi kutoka kwa pointer inayopata.
Kosa la kibajeti la byte tupu katika
strtok
.Tumia Nyumba ya Einherjar kupata hali ya vikundi vinavyopishana na kumaliza na sumu ya Tcache kupata msingi wa kuandika wa kiholela.
Last updated