寒假训练 ciscn_2019_final_4(13/250)——反调试、在栈上伪造chunk并劫持返回地址来达到rop

这个题是heap与stack over相互结合的,第一次写

谢谢ha1vk师傅的博客

问题:

1.要在栈上获取stack地址如何获得?

__erviron变量存储了程序的环境变量,所以也有栈的基址可以看看这个师傅的文章

学到的知识

  1. 在stack上伪造chunk,所以只要内存有rw权限,岂不是都可以进行写入
  2. 调试当某个函数的返回地址不是正常返回时,可以考虑着去劫持另一个函数的地址,并且查看是否有chunk可以分配过去

思路

  1. 程序有uaf漏洞,所以可以轻易的leak libc
  2. 泄露libc后,通过__erviron来获得栈的值,来达成rop
  3. 通过劫持new函数的返回地址来调到一个自己构造的read函数上,来达成读取flag

exp打算过几天再来写一遍,这周末先把先前没写的脚本补上

原文地址:https://www.cnblogs.com/pppyyyzzz/p/14319373.html