ASLR绕过 - 方式2

在ASLR中,并非所有地址都是随机的

  • 也可以利用.text区域

    img

NX+ASLR绕过2 - ROP

ROP(Return Oriented Programming)

  • 狭义:想要执行的代码细分后在.text区域搜索合并

    • RX权限,即能够执行的只有.text区域,因此想办法使用.text区域
  • 广义:除了狭义的ROP之外,也包括ret2plt/ret2libc之类的伪造返回地址的方法

  • 细分的代码叫做gadget,rop gadget

    • 例如下面的代码,可以对eax进行+1操作

    img

寻找rop gadget

很多工具,例如ROPgadget

img
img
  • 其他工具例如msfrop,rp++,Ropeme,ropper

NX+ASLR绕过3 - DROP

DROP(Dynamic ROP)

  • .text区域的gadget很少时的情况

  • 基于泄漏的libc地址,使用libc中的gadget构造ROP

  • 因为libc相对比较大,其中的gadget非常多

  • 在泄漏libc地址的大部分情况中非常有效

  • 前提是指导目标环境的libc版本

    img