0day 第10章 --栈中的保护机制:GS

10 篇文章 1 订阅

实验环境:

winxp sp3 、vs2010

实验要求:

vs编译时要求禁用优化、release版本

GS的保护原理

看图就明白了
在这里插入图片描述
在这里插入图片描述

在vs2010中可通过以下选项选择是否开启GS,默认开启:
在这里插入图片描述

GS保护的局限性:

(1) 函数不包含缓冲区

(2) 函数被定义为具有变量参数列表

(3) 函数使用无保护的关键字标记

(4) 函数在第一个语句中包含内嵌汇编代码

(5)缓冲区不是8字节类型且大小小于等于4个字节

针对(3)和(5)进行说明:

(3)通过添加 #pragma strict_gs_check(on) 可以对任意类型的函数添加Security Cookie,如:
在这里插入图片描述

(5)对上述不加关键字保护的程序进行编译运行,会出现内存访问冲突。其中0x75662065是“e fu”经过ASCII码转换后的值,说明返回地址已经被字符串覆盖了!
在这里插入图片描述
用IDA加载,观察到vulfunction函数在返回前果然没有Security Cookie
在这里插入图片描述
如果添加了关键字保护,编译运行直接弹出“缓冲区溢出”的框框
在这里插入图片描述
用IDA加载,观察到vulfunction函数在返回前添加了Security Cookie
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值