首页
社区
课程
招聘
[原创]2019 Q2 第三题 金字塔的诅咒(pwn) 分析
发表于: 2019-6-23 16:02 3353

[原创]2019 Q2 第三题 金字塔的诅咒(pwn) 分析

2019-6-23 16:02
3353

保护全开

程序一开始,作者就给出了亲切的问候:

主函数很简单:

很明显的格式化字符串漏洞,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


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2019-6-23 16:45 被mratlatsn编辑 ,原因:
收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回