前言
为了更好地对缓冲区进行利用,十分有必要了解一下checksec所检查出的漏洞缓解措施都意味着什么
![在这里插入图片描述](https://img-blog.csdnimg.cn/033686f34f8340978de1687b58a79a2e
如图上所示,RELRO、Stack、NX、PIE四种保护机制,下方介绍时,括号里的是在Windows系统中的名称
以下主要来源于《从0到1CTFer成长之路》
一、NX(DEP)
NX即是No-execute,不可执行。原理是通过现代操作系统的内存保护单元机制(MPU)对程序内存按页的粒度进行权限设置,其基本规则为可写权限与可执行权限互斥。因此开启了NX的程序代表着堆栈上写入的代码数据将不可被执行,也就无法直接通过溢出写入shellcode而执行任意代码。
所有可以被修改写入的数据的内存都不可执行,所有可执行的代码数据都是不可修改的。这就是可执行权限与可写权限互斥
GCC编写程序默认开启NX,关闭方法是在编译是加入**-z execstack参数**
gcc -z execstack -o test test.c
二、Stack Canary
Stack Canary保护一种针对栈溢出攻击而设计的保护机制。当