寒假训练 ciscn_2019_final_4(13/250)——反调试、在栈上伪造chunk并劫持返回地址来达到rop
这个题是heap与stack over相互结合的,第一次写
问题:
1.要在栈上获取stack地址如何获得?
__erviron变量存储了程序的环境变量,所以也有栈的基址可以看看这个师傅的文章
学到的知识
- 在stack上伪造chunk,所以只要内存有rw权限,岂不是都可以进行写入
- 调试当某个函数的返回地址不是正常返回时,可以考虑着去劫持另一个函数的地址,并且查看是否有chunk可以分配过去
思路
- 程序有uaf漏洞,所以可以轻易的leak libc
- 泄露libc后,通过__erviron来获得栈的值,来达成rop
- 通过劫持new函数的返回地址来调到一个自己构造的read函数上,来达成读取flag
exp打算过几天再来写一遍,这周末先把先前没写的脚本补上