-
-
[原创]2019 Q2 第三题 金字塔的诅咒(pwn) 分析
-
发表于:
2019-6-23 16:02
3298
-
[原创]2019 Q2 第三题 金字塔的诅咒(pwn) 分析
保护全开
程序一开始,作者就给出了亲切的问候:
主函数很简单:
很明显的格式化字符串漏洞,format string是个全局变量:
首先栈上有libc和栈地址,先把这两个泄露出来,计算出one_gadget和保存返回地址的栈地址。
主要思路:利用%n参数改写main函数返回地址为one_gadget。
然而栈上并没有指向返回地址的值,所以我们要自己构造出来。
构造方法:
1.通过调试,找到一个保存在栈上的栈指针,而且这个栈指针指向的值也是一个栈上的地址(因为%n测试时只能写入两个字节的值,写4个字节会失败?)。
2.%n参数修改这个栈指针指向的栈地址的低16位为&ret_addr的低16位,这样,这个栈地址就和&ret_addr一样了。
3.%n参数修改ret_addr低16位为one_gadget低16位
4.%n参数修改这个栈指针指向的栈地址的低16位为&ret_addr+2的低16位
5.%n参数修改ret_addr高16位为one_gadget高16位
最后程序返回,执行One_gadget拿到shell
[注意]看雪招聘,专注安全领域的专业人才平台!
最后于 2019-6-23 16:45
被mratlatsn编辑
,原因: