Linux缓冲区保护机制

本文详细介绍了Linux系统中用于保护缓冲区安全的几种机制,包括NX(不可执行)、Stack Canary(栈保护)、PIE(地址空间布局随机化)和Full Relro(动态符号绑定)。这些机制旨在防止缓冲区溢出攻击,增强系统安全性。
摘要由CSDN通过智能技术生成

前言

为了更好地对缓冲区进行利用,十分有必要了解一下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保护一种针对栈溢出攻击而设计的保护机制。当

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShouCheng3

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值