用织梦做的网站怎样看,千锋培训价目表,营销型网站的建设要求都有什么作用,境外网站服务器缓冲区溢出攻击的基本原理就是溢出时覆盖了函数返回地址#xff0c;之后就会去执行攻击者自己的函数#xff1b;
针对缓冲区溢出时覆盖函数返回地址这一特征#xff0c;微软在编译程序时使用了安全编译选项-GS#xff1b; 目前版本的Visual Studio中默认启用了这个编译选项…
缓冲区溢出攻击的基本原理就是溢出时覆盖了函数返回地址之后就会去执行攻击者自己的函数
针对缓冲区溢出时覆盖函数返回地址这一特征微软在编译程序时使用了安全编译选项-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 编译器选项保护以下项 函数调用的返回地址 函数的异常处理程序地址 易受攻击的函数参数