缓冲区溢出-canary保护-创新互联
基础知识:
我们知道在32位操作系统上,主要是溢出栈缓冲区,覆盖函数返回地址来达到劫持程序的木的,那么Linux为了防御该问题,使用了canary来保护函数的返回地址。
canary保护是Linux众多保护机制的一种,主要的作用是防御溢出***。他的工作原理是在函数执行时,取gs:0x14的值放到某一位置中,我们假设叫A,那么在程序执行结束后,把A位置的值和gs:0x14的值进行异或如果结果为0说明没有被修改,否则被修改了。
下面我们来通过代码来查看效果
首先我们不使用canary防护:gcc -m32 -o0 canary.c -o canary
使用canary防护:gcc -fstack-protector-all -m32 -o0 canary.c -o canary
在截图中标红的是我们加入-fstack-protector-all带来的效果,在开头取gs:0x14的数据保存到ebp-exc的位置
第二个标红的地方是讲ebp-0xc位置的数据拿出来和gs:0x14的值进行比对,如果想要更改函数返回地址的值,必须要先覆盖canary的值,而canary的值是随机的,所以如果没有办法获取到canary的值,是没有办法做到溢出***的。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
网页标题:缓冲区溢出-canary保护-创新互联
当前URL:http://myzitong.com/article/gogso.html