尽管有数据执行保护,仍执行任意代码

尽管有数据执行保护,仍执行任意代码

如今有类似的保护措施宽^X,是否仍然有可能成功利用缓冲区溢出,例如NOP幻灯片

答案1

缓冲区溢出的可利用性根据周围的代码而变化很大。例如,是否有其他缓解技术,例如堆栈金丝雀。但是,如果您只考虑 DEP/W^X,那么是的,通常仍然可以利用它们。

如何利用它很大程度上取决于缓冲区溢出的类型。从您提到使用 NOP 幻灯片来看,我认为您正在谈论一个简单的基于堆栈的缓冲区溢出。在这种情况下,您可以使用诸如面向返回编程(ROP)或者面向跳跃的编程(JOP)。这些技术重用存在于已标记为可执行的内存部分中的代码。因此,您不需要标记为可执行和可写的内存。

减轻这些代码重用攻击的一种技术是控制流完整性 (CFI)检查。此缓解措施尝试仅允许代码流经已知的“良好”路径。近年来,这已开始获得更多主流支持,例如来自以下公司的编译器支持铿锵/llvm

相关内容