Fork me on GitHub

栈溢出

ROP

Ret2Text

ret2text即需要我们控制程序执行程序本身已有的的代码(.text)

题目

Ret2ShellCode

ret2shellcode需要我们控制程序执行shellcode代码。

Ret2SysCall

理论

ret2syscall需要我们控制程序执行系统调用,获取shell

系统调用执行条件:

  • 把系统调用的编号存入 EAX
  • 把函数参数存入其它通用寄存器
  • 触发 0x80 号中断(int 0x80)

例如:

执行execve("/bin/sh",NULL,NULL)

X86下

  • 系统调用号即eax应该为0xb
  • 第一个参数即ebx应该指向/bin/sh的地址
  • 第二个参数即ecx应该为0
  • 第三个参数edx应该为0

相关题目

Ret2Libc

ret2libc即控制函数的执行 libc中的函数,通常是返回至某个函数的plt处或者函数的具体位置(即函数对应的got表项的内容)

Advanced ROP

Ret2__libc_scu_init

Ret2 dl_resolve

SROP