Ret2lib + Printf leak - arm64
Ret2lib - NX bypass na ROP (hakuna ASLR)
Kusanya bila canary:
Find offset
x30 offset
Kuunda muundo na pattern create 200
, tukitumia hiyo, na kuangalia kwa offset na pattern search $x30
tunaweza kuona kwamba offset ni 108
(0x6c).
Tukiangalia kazi kuu iliyotafsiriwa tunaweza kuona kwamba tungependa jump kwa maagizo ya kuruka kwa printf
moja kwa moja, ambayo offset kutoka mahali ambapo binary imepakuliwa ni 0x860
:
Find system and /bin/sh
string
/bin/sh
stringKwa kuwa ASLR imezimwa, anwani zitakuwa kila wakati sawa:
Find Gadgets
Tunahitaji kuwa na katika x0
anwani ya string /bin/sh
na kuita system
.
Kwa kutumia rooper gadget ya kuvutia ilipatikana:
Hii gadget itapakia x0
kutoka $sp + 0x18
na kisha itapakia anwani x29 na x30 kutoka sp na kuruka kwa x30. Hivyo na gadget hii tunaweza kudhibiti hoja ya kwanza na kisha kuruka kwa system.
Exploit
Ret2lib - NX, ASL & PIE bypass na printf leaks kutoka kwenye stack
Compile bila canary:
PIE na ASLR lakini hakuna canary
Mzunguko 1:
Kuvuja kwa PIE kutoka kwenye stack
Kunyanyua bof kurudi kwenye main
Mzunguko 2:
Kuvuja kwa libc kutoka kwenye stack
ROP: ret2system
Printf leaks
Kuweka breakpoint kabla ya kuita printf inawezekana kuona kwamba kuna anwani za kurudi kwenye binary kwenye stack na pia anwani za libc:
Kujaribu offsets tofauti, %21$p
inaweza kuvuja anwani ya binary (PIE bypass) na %25$p
inaweza kuvuja anwani ya libc:
Kupunguza anwani ya libc iliyovuja na anwani ya msingi ya libc, inawezekana kuona kwamba offset ya anwani iliyovuja kutoka kwenye msingi ni 0x49c40
.
x30 offset
Tazama mfano wa awali kwani bof ni sawa.
Find Gadgets
Kama katika mfano wa awali, tunahitaji kuwa na katika x0
anwani ya string /bin/sh
na kuita system
.
Kwa kutumia rooper gadget nyingine ya kuvutia ilipatikana:
Hii gadget itapakia x0
kutoka $sp + 0x78
na kisha ipakie anwani x29 na x30 kutoka sp na kuruka kwa x30. Hivyo na gadget hii tunaweza kudhibiti hoja ya kwanza na kisha kuruka kwa system.
Exploit
Last updated