目录

了解VS安全编译选项GS

缓冲区溢出攻击的基本原理就是溢出时覆盖了函数返回地址,之后就会去执行攻击者自己的函数;

针对缓冲区溢出时覆盖函数返回地址这一特征,微软在编译程序时使用了安全编译选项-GS;

目前版本的Visual Studio中默认启用了这个编译选项;

GS的工作机制是,

在所有函数调用发生时,向栈帧内压入一个额外的随机DWORD,称为Security Cookie;

Security Cookie位于EBP之前,系统还将在.data的内存区域中存放一个Security Cookie的副本;

当栈中发生溢出时,Security Cookie将被首先淹没,之后才是EBP和返回地址;

在函数返回之前,系统将执行一个额外的安全验证操作,被称做Security check;

这样如果Security Cookie被改变了,就证明受到了缓冲区溢出攻击;

此选项默认开启;VS2015,如下图;

只是了解一下;还不会反汇编跟踪查看到栈帧内的Security Cookie;

如果每个函数调用都进行Security check,对性能还是会有影响;

根据MS的说法,

如果值不同(Security Cookie),则指示可能已覆盖堆栈。 如果检测到不同的值,将终止进程。

如果命令行编译则是加 /GS 选项;

根据MS的说法,

/GS 编译器选项保护以下项:

函数调用的返回地址;

函数的异常处理程序地址;

易受攻击的函数参数;

本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
christine-rr3 小时前
密码学基础——DES算法
安全·网络安全·密码学·密码
fanjinhong_85214 小时前
网络安全防御核心原则与实践指南
网络·安全·web安全
chuangfumao5 小时前
专家解读|《网络安全法》再次征求意见,增强网络立法协同
网络·安全·web安全
写代码的小王吧7 小时前
【安全】Java幂等性校验解决重复点击(6种实现方式)
java·linux·开发语言·安全·web安全·网络安全·音视频
vortex58 小时前
Bash中因数值比较引发的提权漏洞:数组注入与任意命令执行
linux·开发语言·安全·网络安全·渗透测试·bash
斯密码赛我是美女9 小时前
文件上传漏洞
安全·web安全
UAV_ckesc9 小时前
高压之巅,安全之盾 ——南昌长空ROCK 120A-H 无人机高压电调深度技术解析
安全·无人机·固定翼
神经毒素11 小时前
WEB安全--提权思路
linux·windows·安全·web安全
故事与他64513 小时前
WVP-GB28181摄像头管理平台存在弱口令
安全