CTF_Pwn保护机制相关(动态更新)
保护机制及其编译选项
NX
-z execstack
/ -z noexecstack
(关闭 / 开启) 不让执行栈上的数据,于是JMP ESP就不能用了
即可写处不可执行,可执行处不可写
Canary
-fno-stack-protector
/-fstack-protector
/ -fstack-protector-all
(关闭 / 开启 / 全开启) 栈里插入cookie信息
又名金丝雀,在函数开始时就随机产生一个值,将这个值CANARY放到栈上紧挨ebp的上一个位置,当攻击者想通过缓冲区溢出覆盖ebp或者ebp下方的返回地址时,一定会覆盖掉CANARY的值;当程序结束时,程序会检查CANARY这个值和之前的是否一致,如果不一致,则不会往下运行,从而避免了缓冲区溢出攻击。
PIE
-no-pie
/ -pie
(关闭 / 开启) 地址随机化,另外打开后会有get_pc_thunk
RELRO
-z norelro
/ -z lazy
/ -z now
(关闭 / 部分开启 / 完全开启) 对GOT表具有写权限