我们专注攀枝花网站设计 攀枝花网站制作 攀枝花网站建设
成都网站建设公司服务热线:400-028-6601

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

缓冲区溢出-canary保护

本文视频:
          如果文字过于枯燥,可观看在线视频:https://edu.51cto.com/sd/16514

成都创新互联公司是一家专业提供铁锋企业网站建设,专注与成都做网站、成都网站建设、成都外贸网站建设H5建站、小程序制作等业务。10年已为铁锋众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。

基础知识:

        我们知道在32位操作系统上,主要是溢出栈缓冲区,覆盖函数返回地址来达到劫持程序的木的,那么Linux为了防御该问题,使用了canary来保护函数的返回地址。

canary保护是Linux众多保护机制的一种,主要的作用是防御溢出***。他的工作原理是在函数执行时,取gs:0x14的值放到某一位置中,我们假设叫A,那么在程序执行结束后,把A位置的值和gs:0x14的值进行异或如果结果为0说明没有被修改,否则被修改了。

下面我们来通过代码来查看效果

首先我们不使用canary防护:gcc -m32 -o0 canary.c -o canary

缓冲区溢出-canary保护

使用canary防护:gcc -fstack-protector-all -m32 -o0 canary.c -o canary

缓冲区溢出-canary保护

在截图中标红的是我们加入-fstack-protector-all带来的效果,在开头取gs:0x14的数据保存到ebp-exc的位置

第二个标红的地方是讲ebp-0xc位置的数据拿出来和gs:0x14的值进行比对,如果想要更改函数返回地址的值,必须要先覆盖canary的值,而canary的值是随机的,所以如果没有办法获取到canary的值,是没有办法做到溢出***的。


本文标题:缓冲区溢出-canary保护
网页网址:http://shouzuofang.com/article/jcsdcd.html

其他资讯