Basic Binary Exploitation Methodology
Taarifa Msingi za ELF
Kabla ya kuanza kutumia udhaifu wowote ni muhimu kuelewa sehemu ya muundo wa binary ya ELF:
pageELF Basic InformationZana za Udukuzi
pageExploiting ToolsMbinu ya Kujaza Stack
Kwa mbinu nyingi ni vizuri kuwa na mpango ambapo kila mbinu itakuwa na manufaa. Kumbuka kuwa kinga sawa zitaathiri mbinu tofauti. Unaweza kupata njia za kuzidi kinga kwenye kila sehemu ya kinga lakini sio katika mbinu hii.
Kudhibiti Mwelekeo
Kuna njia tofauti unaweza kumaliza kudhibiti mwelekeo wa programu:
Kujaza Stack kwa kubadilisha kiashiria cha kurudi kutoka kwenye stack au EBP -> ESP -> EIP.
Inaweza kuhitaji kutumia Kujaza Nambari kusababisha kujaa
Au kupitia Andika Nini Wapi hadi Utekelezaji
Vidokezo vya Format: Tumia
printf
kuandika yaliyomo yoyote kwenye anwani za yoyote.Kuorodhesha Array: Tumia kiashiria kilichopangwa vibaya ili kuweza kudhibiti baadhi ya mizunguko na kupata andika yoyote.
Inaweza kuhitaji kutumia Kujaza Nambari kusababisha kujaa
bof hadi WWW kupitia ROP: Tumia kujaza kijazo ili kujenga ROP na kuweza kupata WWW.
Unaweza kupata mbinu za Andika Nini Wapi hadi Utekelezaji katika:
pageWrite What Where 2 ExecMizunguko Isiyokuwa na Mwisho
Jambo la kuzingatia ni kwamba kawaida udukuzi mmoja wa udhaifu huenda usiwe wa kutosha kutekeleza udanganyifu wa mafanikio, hasa baadhi ya kinga zinahitaji kuzidiwa. Kwa hivyo, ni muhimu kujadili chaguzi kadhaa za kufanya udhaifu mmoja uweze kutumiwa mara kadhaa katika utekelezaji huo wa binary:
Andika kwenye mnyororo wa ROP anwani ya
main
function au kwenye anwani ambapo udhaifu unatokea.Kwa kudhibiti mnyororo sahihi wa ROP unaweza kutekeleza vitendo vyote katika mnyororo huo
Andika anwani ya
exit
kwenye GOT (au kazi nyingine yoyote inayotumiwa na binary kabla ya kumaliza) anwani ya kurudi nyuma kwa udhaifuKama ilivyoelezwa katika .fini_array, hifadhi kumbukumbu 2 hapa, moja kuita udhaifu tena na nyingine kuita**
__libc_csu_fini
** ambayo itaita tena kazi kutoka.fini_array
.
Malengo ya Udukuzi
Lengo: Piga simu kwa Kazi Iliyopo
ret2win: Kuna kazi katika nambari unayohitaji kupiga simu (labda na baadhi ya parameta maalum) ili kupata bendera.
Katika bof na PIE, utahitaji kuzidi kinga hiyo
Katika bof na canary, utahitaji kuzidi kinga hiyo
Ikiwa unahitaji kuweka vigezo kadhaa kuita kazi ya ret2win kwa usahihi unaweza kutumia:
Mnyororo wa ROP ikiwa kuna vifaa vya kutosha kuandaa vigezo vyote
SROP (kwa hali unaweza kupiga simu hii ya mfumo) kudhibiti usajili mwingi
Kupitia Andika Nini Wapi hadi Utekelezaji unaweza kutumia udhaifu mwingine (si bof) kuita kazi ya
win
.Kuhamisha Pointi: Kwa kesi ambapo stack ina pointi kwa kazi itakayoitwa au kwa herufi itakayotumiwa na kazi ya kuvutia (mfumo au printf), inawezekana kubadilisha anwani hiyo.
Vigezo visivyoanzishwa: Kamwe hujui.
Lengo: RCE
Kupitia shellcode, ikiwa nx imelemazwa au kuchanganya shellcode na ROP:
(Stack) Shellcode: Hii ni muhimu kuhifadhi shellcode kwenye stack kabla au baada ya kubadilisha kiashiria cha kurudi kisha piga simu kwake kuitekeleza:
Katika kesi yoyote, ikiwa kuna canary, katika bof ya kawaida utahitaji kuzidi (kuvuja) hiyo
Na ASLR utahitaji mbinu kama ret2esp/ret2reg kusonga kwake
Hii itachanganya shellcode na mnyororo wa ROP.
Kupitia syscalls
Ret2syscall: Inatumika kuita
execve
ili kuendesha amri za aina yoyote. Unahitaji kuweza kupata gadgets za kuita syscall maalum na parameta.SROP inaweza kuwa na manufaa kwa kuandaa ret2execve
Kupitia libc
Ret2lib: Inatumika kuita kazi kutoka kwenye maktaba (kawaida kutoka kwa
libc
) kama vilesystem
na baadhi ya hoja zilizoandaliwa (k.m.'/bin/sh'
). Unahitaji binary ili ipakie maktaba na kazi unayotaka kuita (kawaida libc).Ikiwa imekompiliwa tuli na hakuna PIE, anwani ya
system
na/bin/sh
haitabadilika, hivyo ni rahisi kuzitumia tuli.Bila ASLR na kujua toleo la libc lililopakiwa, anwani ya
system
na/bin/sh
haitabadilika, hivyo ni rahisi kuzitumia tuli.Tumia
ret2dlresolve
kutatua anwani yasystem
na kuipiga simuZuia ASLR na kuhesabu anwani ya
system
na'/bin/sh'
kwenye kumbukumbu.Zuia PIE
Pata toleo la libc lililotumika (leak anwani za kazi kadhaa)
Angalia hali za awali za ASLR ili kuendelea.
Kupitia EBP/RBP
Stack Pivoting / EBP2Ret / EBP Chaining: Dhibiti ESP ili kudhibiti RET kupitia EBP iliyohifadhiwa kwenye steki.
Ina manufaa kwa mifumo ya steki yenye makosa ya kimo cha moja
Ina manufaa kama njia mbadala ya kumaliza kudhibiti EIP wakati unatumia EIP kujenga mzigo wa data kwenye kumbukumbu na kisha kusonga kwenda kwake kupitia EBP
Mambo Mengine
Pointers Redirecting: Ikiwa steki ina pointa kwenye kazi itakayoitwa au kwenye herufi itakayotumiwa na kazi ya kuvutia (kama vile system au printf), inawezekana kubadilisha anwani hiyo.
Variables zisizowekwa: Kamwe hujui
Last updated