【问题标题】:Stack overflow exploits: RET vs. SEH overwrite堆栈溢出漏洞利用:RET 与 SEH 覆盖
【发布时间】:2015-04-26 19:10:53
【问题描述】:

我一直在学习使用堆栈溢出编写 RET 值和 SEH 覆盖漏洞利用的教程。

据我了解,当我覆盖 SEH 值时,RET 值也会被覆盖,而且进行 SEH 漏洞利用要困难得多,因为您还需要抛出异常才能使漏洞利用运行。

如果是这样,如果我总是可以使用 RET 值,那么 SEH 覆盖利用有什么用? SEH 覆盖优于 RET 覆盖的优缺点是什么?

【问题讨论】:

  • 我不认为你总是可以覆盖两者。可能存在只允许覆盖其中一个的错误。
  • @AndrewMedico 我并没有说我总是可以覆盖两者,我说一旦你成功覆盖了 SEH,你很有可能也覆盖了 RET,因为在大多数情况下它位于在它上面的堆栈上。

标签: security stack-overflow exploit seh


【解决方案1】:

这取决于漏洞是什么,利用条件是什么。

如果您可以覆盖 RET 并构建一个完整的漏洞利用,那么您是正确的,并且没有必要覆盖 SEH。

但情况并非总是如此。在某些情况下,会出现 RET 覆盖保护,例如堆栈金丝雀。

在这种情况下,使用 RET 覆盖进行利用将比覆盖 SEH 处理程序并生成异常要困难得多(如果不是不可能的话)。

关于覆盖 SEH 也可以这样说,如果 SafeSeh 为 ON 且 stack canary 为 OFF,则使用 RET 覆盖比 SEH 更容易利用。

一般来说,我会说决定使用哪种漏洞利用技术的主要事实取决于现有的缓解措施和漏洞利用的难易程度。

如果所有其他选项都失败了,有另一个可以使用的攻击向量总是好的。

【讨论】:

    猜你喜欢
    • 2012-06-02
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多