zoukankan      html  css  js  c++  java
  • stack pivot学习

    理论

    最近看了i春秋的pwn入门的stack pivot发现这里面的很多细节都不知道,写下博客证明自己学过

    在某些时候,我们有时会因为栈开了ASLR,而导致就算可以控制ip寄存器也无法把其调到指定位置,所以stack pivot可以做到与这种技术抗衡,因为这种技术可以把栈迁移到全局变量上,这样我们就可以构造伪造的返回地址,来达到返回的效果

    而达到这种效果一般有对栈控制的指令是很少的,但leave这个指令有很多,所以只要我们可以通过leave控制ebp指令,那么两个leave指令后,就可以迁移到我们任意要去的地方了。

    这里引用了i春秋第六刊的图片

     

    第一次leave; ret,new esp为栈劫持的目标地址。可以看到执行到retn时,esp还在原来的栈上,ebp已经指向了新的栈顶

     

     

    经被成功劫持到新的栈上,执行完gadget后栈顶会在new esp-4(64位是-8)的位置上。此时栈完全可控通过预先或者之后在new stack上布置数据可以轻松完成攻击

     例题

  • 相关阅读:
    闭包
    this
    函数声明,表达式,构造函数
    算法学习_栈
    LeetCode刷题_140
    2020/3/20 刷题
    2020/3/19 刷题
    2020/3/13_C++实验课
    刷题(主要是DFS) 2020年3月12日
    DFS的一些题2020/3/11
  • 原文地址:https://www.cnblogs.com/pppyyyzzz/p/14116817.html
Copyright © 2011-2022 走看看