首页 > 分享 > 两种保护机制:NX和Canary

两种保护机制:NX和Canary

两种保护机制:NX和Canary

最新推荐文章于 2024-11-11 19:02:30 发布

weixin_46711318 于 2020-07-31 09:58:58 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

因为自己学的比较慢,自学能力也比较差,假期过去挺久了,进度也才跟进到保护机制,这次的博客我就来说说最近在学的两种保护机制:NX和Canary。

在这里插入图片描述

先来说说NX保护机制,NX典型的例子有ret2syscall和libc,为了便于理解为什么有这种保护机制以及为什么需要这种保护机制,我去网上找了一些NX的原理。
NX即No-eXecute(不可执行)的意思,NX(DEP)的基本原理是将数据所在内存页标识为不可执行,当程序溢出成功转入shellcode时,程序会尝试在数据页面上执行指令,此时CPU就会抛出异常,而不是去执行恶意指令。
通过学习以及个人的理解,我认为NX保护机制其实就是让我们不能直接利用程序中的某一段代码或者自己填写代码来获得 shell,而是通过其他途径绕过保护机制然后得到shell,例如ret2syscall是利用程序中的 gadgets 来获得 shell,libc则是控制函数的执行 libc 中的函数,通常是返回至某个函数的 plt 处或者函数的具体位置(即函数对应的 got表项的内容)。
在这里插入图片描述

而相比之下我认为Canary则需要做题的人多考虑一些东西,下面是我在网上找到的一些原理。
Canary表示栈保护功能有没有开启。栈溢出保护是一种缓冲区溢出攻击缓解手段,当函数存在缓冲区溢出攻击漏洞时,攻击者可以覆盖栈上的返回地址来让shellcode能够得到执行。当启用栈保护后,函数开始执行的时候会先往栈里插入cookie信息,当函数真正返回的时候会验证cookie信息是否合法,如果不合法就停止程序运行。攻击者在覆盖返回地址的时候往往也会将cookie信息给覆盖掉,导致栈保护检查失败而阻止shellcode的执行。在Linux中我们将cookie信息称为canary。
简单的总结一下,canary保护机制会在栈溢出的返回地址上放一个标志,在函数结束时会判断这个标志是否改变,若改变则程序结束。
参考文献:https://www.cnblogs.com/Spider-spiders/p/8798628.html(有需要的可以查看)

相关知识

花式栈溢出技巧
NX二次开发:字体的调用
NCO=NX的原因
混动雷克萨斯NX养车和燃油版持平?1700元/月花在哪
两种杜鹃花属植物对长期遮阴后全光照环境的生理响应及其光保护机制
植物的枯萎和生理保护机制.pptx
植物遗传资源保护与利用的市场化机制和国际制度
新媒体分发的两种机制是什么?有什么技巧?
珍稀濒危植物的濒危机制与保护对策
生态保护红线划定与调整的法律机制研究

网址: 两种保护机制:NX和Canary https://m.huajiangbk.com/newsview1618821.html

所属分类:花卉
上一篇: 深圳市得一创新技术取得耐用型保护
下一篇: 程序保护机制