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

函数调用的返回地址;

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

易受攻击的函数参数;

相关推荐
第八学期37 分钟前
如何解决挖矿病毒的攻击
运维·服务器·安全
zhang133830890751 小时前
QY-18DL-1倾斜位移裂缝计:智能地质安全监测先锋
运维·网络·安全
RisunJan1 小时前
Linux命令-nmap(网络探测和安全审计工具)
linux·网络·安全
王的宝库1 小时前
【K8s】集群安全机制(三):准入控制
网络·安全·kubernetes
你觉得脆皮鸡好吃吗2 小时前
SQL注入 手工注入
网络·数据库·sql·安全·web安全·网络安全学习
盟接之桥2 小时前
盟接之桥®制造业EDI软件:专注制造,为制造业服务,让全球供应链协同更有底气
网络·安全·低代码·汽车·制造
下地种菜小叶2 小时前
订单中心怎么设计?一次讲清订单主链路、状态流转、拆单模型与核心边界
安全·缓存·rabbitmq
一名优秀的码农3 小时前
vulhub系列-83-Grotesque:1.0.1(超详细)
安全·web安全·网络安全·网络攻击模型·安全威胁分析
寒秋花开曾相惜3 小时前
(学习笔记)4.1 Y86-64指令集体系结构(4.1.6 一些Y86-64指令 )
linux·运维·服务器·开发语言·笔记·学习·安全