Protection
- ASLR
- DEP
- PIE
- StackGuard
ASLR
地址随机化
Address Space Layout Randomization,程序每次执行时,stack、heap、library的位置都不一样
$:ldd /bin/lib ldd命令 查看当前的binary用了哪些library
检查是否开启ASLR
DEP
data execution prevention数据执行保护,又称为NX
可写的不能执行,可执行的不可写
PIE
地址无关可执行文件
Stack Guard
编译器对stack overflow的一种保护机制,可以有效的防止缓冲区溢出攻击
ROP(Return Oriented Programming)是一种利用现有的程序片段组合出想要功能的技巧
可以使用ROP解除DEP限制,然后执行shellcode
可以使用ROP绕过ASLR限制、StackGuard和PIE
查看有哪些保护 gdb checksee.sh
ROP
使用ROP的关键
- 查找gadget
- 排列组合gadget
ROP类型
- 控制寄存器做syscall
- 使用原有程序里的function
- 使用libc里的gadget或者function (绕过ASLR)