_RightHand

导航

 

攻击者会在攻击字符串中插入指向攻击代码的地址,执行ret时会跳转地址从而调用了攻击代码。为了对抗缓冲区溢出攻击,有了栈随机化(stack randomization).栈随机化的思想使得程序每次运行时栈的位置都有变化。实现方式是在栈上分配一段随机大小的空间,程序不会使用这段空间,这段空间会导致程序每次执行时后续的栈位置发生了变化。这样一来攻击者不知道自己的攻击代码会加载到什么位置,那么就不知道在攻击字符串中插入什么样的地址。攻击者的措施是在攻击代码中加入大量的nop(no operation)指令,这些指令除了让PC增加不做任何操作。这段序列就被称为 nop sled. nop sled可以帮助攻击者增加访问到自己的攻击代码的概率。

比如为了尝试破解2^23 的随机化,攻击者建立了一个2^8 bytes的nop sled,枚举2^15 个地址就可以到达破解的目的,因为每次枚举出的地址只要是2^8中的之一就可以。

posted on 2021-02-14 15:30  _RightHand  阅读(1227)  评论(0编辑  收藏  举报