栈溢出
ret2text / ret2shellcode 略
ROP
工具: ROPgadget
原理
在 NX 栈保护的情况下自定义数据和控制程序运行流
ret2syscall
利用 gadget 控制寄存器值,构造系统调用 execve("/bin/sh",NULL,NULL)
ret2libc
利用 gadget 控制运行流,执行 libc 函数 system("/bin/sh")
system() ?
直接走 plt 表
利用泄露 libc 函数地址(__libc_start_main)+固定函数地址差值
"/bin/sh"
已存在字符串( libc 中也包含)
调用 get 填入变量
Trick
多轮利用,获取信息+最后利用(靠运行时ASLR不重新变化)
堆利用
格式化字符串漏洞
整数溢出
更像是为后续exp铺垫(?