我一直在研究使用堆栈溢出写入RET值和SEH覆盖漏洞的教程。
据我了解,当我覆盖SEH值时,RET值也会被覆盖,而且创建SEH漏洞要困难得多,因为你还需要抛出异常才能使漏洞运行。< / p>
如果是这样,如果我总能使用RET值,那么SEH覆盖漏洞的用途是什么? SEH覆盖了RET覆盖的优缺点是什么?
答案 0 :(得分:3)
这取决于漏洞是什么以及利用条件是什么。
如果您可以覆盖RET并构建一个完整的漏洞而不是正确的覆盖,那么就不需要覆盖SEH。
但情况并非总是如此。在某些情况下,会出现RET覆盖保护,就像堆栈金丝雀一样。
在这种情况下,使用RET覆盖进行攻击比覆盖SEH处理程序并生成异常要困难得多(如果不是不可能的话)。
同样可以说覆盖SEH,如果SafeSeh为ON且堆栈canary为OFF,则使用RET覆盖比使用SEH更容易利用。
一般来说,我会说决定使用哪种漏洞利用技术的主要因素取决于现有的缓解措施和易用性。
如果所有其他选项都失败,可以使用另一个攻击向量。