CTF | srop 利用
SROP(Sigreturn Oriented Programming) SROP signal 机制 32 位的 sigreturn 的调用号为 77,64 位的系统调用号为 15 过程: 推荐看 angelboy 的 ppt x86 mov eax,0x77 int 0x80 x64 mov rax,0xf syscall 利用要点 利用 sigreturn ,构造 syscall 控制所有寄存器 控制 ip 和 stack 需要足够的栈空间保存 signal frame 直接伪造 sigcontext 结构,全部 push 进 stack 将 ret address 设在 sigreturn syscall 的 gadget 将 signal frame 中的 rip(eip) 设在 syscall sigreturn 回来后就会执行我们自己构造的 syscall 要求 利用栈溢出控制栈内容 相应的地址 ‘/bin/sh’ signal frame syscall sigreturn 系统调用链 控制栈指针 rsp 把原来 rip 指向的 syscall gadget 换成 syscall;ret gadget 基本思路:首先构造一个 fake signal frame 写入内存中,将然后将 RSP 指向这段空间,再发送 rt_sigreturn 信号( 利用 eax 和 syscall 调用 sigreturn 控制 rax=15 32位是 0x77)。此时,内核会将构造好的 fake signal frame 取出,恢复。恢复后类似于ROP的方式,为 syscall 调用 execve...