首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >堆栈金丝雀保护和ROP

堆栈金丝雀保护和ROP
EN

Security用户
提问于 2012-10-24 17:01:02
回答 2查看 2.5K关注 0票数 6

据我所知,堆栈金丝雀是写在堆栈上的值,如果被缓冲区溢出覆盖,则强制应用程序返回关闭。

我的问题是:如果我覆盖EIP和堆栈因为我想要ROP什么的.我再也不回来..。堆叠金丝雀也会造成问题吗?

EN

回答 2

Security用户

回答已采纳

发布于 2012-10-24 17:25:01

堆栈金丝雀仍然是一个问题,因为在堆栈缓冲区溢出的情况下,您无法控制EIP而不覆盖返回地址(该地址位于carny的上方)。此外,包含基于堆栈的缓冲区溢出的函数必须在损坏的返回地址成为新的EIP之前返回。

对于悬空指针来说,这不是一个问题。

你需要花更多的时间在你的调试器!这是没有借口的。如果你在开发过程中迈出了一步,你就会知道这一点!

票数 3
EN

Security用户

发布于 2016-10-24 19:54:53

在某些溢出情况下,您可以覆盖EIP,但不触及金丝雀值。这里我引用Enrico Perla的“内核开发指南:攻击核心”一书:

堆栈金丝雀是一种很好的保护方案,但它有一些问题:一个特别受控制的溢出(例如,保存在堆栈上的数组上基于索引的溢出)可以在不接触金丝雀的情况下写入金丝雀。

票数 2
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/23097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档