BF Addresses in the Stack
Last updated
Last updated
Jifunze na zoezi la AWS Hacking:Mafunzo ya HackTricks AWS Red Team Expert (ARTE) Jifunze na zoezi la GCP Hacking: Mafunzo ya HackTricks GCP Red Team Expert (GRTE)
Ikiwa unakabiliana na binary iliyolindwa na canary na PIE (Position Independent Executable) labda unahitaji kupata njia ya kuzipuuza.
Tambua kwamba checksec
inaweza isigundue kwamba binary inalindwa na canary ikiwa ilikompiliwa kistatiki na haiwezi kutambua kazi.
Hata hivyo, unaweza kugundua hii kwa mikono ikiwa unagundua kwamba thamani imesave kwenye stack mwanzoni mwa wito wa kazi na thamani hii inachunguzwa kabla ya kutoka.
Ili kuzipuuza PIE unahitaji kuvuja anwani fulani. Na ikiwa binary haivuji anwani yoyote, bora kufanya ni kuzipuuza RBP na RIP zilizohifadhiwa kwenye stack katika kazi yenye kasoro. Kwa mfano, ikiwa binary inalindwa kwa kutumia canary na PIE, unaweza kuanza kuzipuuza canary, kisha Byte zinazofuata 8 (x64) zitakuwa RBP iliyohifadhiwa na Byte zinazofuata 8 zitakuwa RIP iliyohifadhiwa.
Inatarajiwa kwamba anwani ya kurudi kwenye stack inamilikiwa na msimbo wa binary kuu, ambao, ikiwa kasoro iko kwenye msimbo wa binary, kawaida ndivyo itakavyokuwa.
Kuzipuuza RBP na RIP kutoka kwa binary unaweza kugundua kwamba byte sahihi iliyoguessed ni sahihi ikiwa programu inatoa kitu au tu haivunjiki. Kazi ile ile kama iliyotolewa kwa ajili ya kuzipuuza canary inaweza kutumika kuzipuuza RBP na RIP:
Kitu cha mwisho unachohitaji kushinda PIE ni kuhesabu anwani muhimu kutoka kwa anwani zilizovuja: RBP na RIP.
Kutoka kwa RBP unaweza kuhesabu mahali ambapo unaiandika shel yako kwenye steki. Hii inaweza kuwa muhimu sana kujua mahali utakapoiandika string "/bin/sh\x00" ndani ya steki. Ili kuhesabu umbali kati ya RBP iliyovuja na shel yako, unaweza tu kuweka kituo cha kusitisha baada ya kuvuja kwa RBP na kuangalia mahali shel yako ilipo, kisha, unaweza kuhesabu umbali kati ya shel yako na RBP:
Kutoka kwa RIP unaweza kuhesabu anwani ya msingi ya faili ya PIE ambayo ndio utahitaji kuunda mtandao wa ROP halali.
Ili kuhesabu anwani ya msingi fanya objdump -d vunbinary
na angalia anwani za hivi karibuni zilizochambuliwa:
Katika mfano huo unaweza kuona kwamba Byte 1 na nusu tu inahitajika kutambua msimbo wote, basi, anwani ya msingi katika hali hii itakuwa RIP iliyovuja lakini ikimalizika kwa "000". Kwa mfano ikiwa ulivuja 0x562002970ecf
anwani ya msingi itakuwa 0x562002970000
Kulingana na baadhi ya uchunguzi kutoka kwenye chapisho hili, inawezekana kwamba wakati data ya RBP na RIP inavuja, server haitaanguka na baadhi ya data ambazo sio sahihi na script ya BF itadhani amepata zile sahihi. Hii ni kwa sababu inawezekana kwamba baadhi ya anwani hazitavunja hata kama sio zile sahihi kabisa.
Kulingana na chapisho hilo la blogu, inapendekezwa kuongeza kuchelewesha fupi kati ya maombi kwa server inayoingizwa.