了解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 编译器选项保护以下项:

函数调用的返回地址;

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

易受攻击的函数参数;

相关推荐
Wang's Blog1 分钟前
Linux小课堂: SELinux安全子系统原理与Apache网站目录访问问题解决方案
linux·安全·apache
007tg6 小时前
LINE 账号安全与权重提升实战指南:行为模拟与风控规避策略
安全
数据库安全11 小时前
《金融电子化》:构建金融韧性运行安全体系:从灾备管理到主动防御新范式
大数据·安全·金融
会开花的二叉树14 小时前
应用层网络协议深度解析:设计、实战与安全
网络·网络协议·安全
红树林0714 小时前
beef-xss网页无法访问
安全·web安全·xss
wanhengidc14 小时前
站群服务器都有什么作用
服务器·安全·智能手机·玩游戏
鲜枣课堂15 小时前
重新安全定义,IMS算网融合加速企业专网AI+场景落地
大数据·人工智能·安全
kali-Myon15 小时前
NewStarCTF2025-Week3-Web
sql·安全·web安全·php·ctf
有谁看见我的剑了?15 小时前
Rocky 9 安装 Elasticsearch分布式集群基于非安全特性
分布式·安全·elasticsearch
晓梦林15 小时前
万字解析upload-labs靶场(基于cyberstrikelab网络安全仿真平台)
安全·web安全