堆栈溢出攻击:RET 与 SEH 覆盖

Stack overflow exploits: RET vs. SEH overwrite

我一直在研究使用堆栈溢出编写 RET 值和 SEH 覆盖攻击的教程。

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

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

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

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

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

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

对于覆盖 SEH 也可以这样说,如果 SafeSeh 处于开启状态且堆栈金丝雀处于关闭状态,则使用 RET 覆盖比 SEH 更容易利用。

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

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