首页 > 代码库 > 虚函数突破GS

虚函数突破GS

 

  1. 如何确定变量的内存布局
  2. 为什么不直接执行buff里面的shellcode,而要绕远
    • 因为虚表指针指向buff,buff的地址还要指向另一个地址,没有办法直接执行buff。这是由虚函数与虚表性质决定。
  3. 为什么执行完call还必须返回shellcode,call不就是call进shellcode吗?
    • call是必须的,见问题2.然后剩下的问题是怎么回到shellcode内,一是把shell地址作为call的地址,但是地址在不同电脑上加载的时候是不一样的,所以地址的方法不可行;二是通过跳板跳转实现。这样需要注意的是跳板在shellcode的一开头,当作为shell的时候要被执行到,需要尝试一个“poppopretn”的地址时不产生异常(乱指令比较容易产生异常,但是也会被编译器放过去,尝试的时候7c开头的5个不成,78开头的2个都成功了)。