2018强网杯之opm

本文详细分析了一个开启PIE保护的程序,探讨了如何通过变量覆盖泄露heap和程序地址,以及如何修改got表实现控制流程。首先,通过覆盖role[1]指针泄露heap地址,然后伪造role[3]以泄露func_ptr地址。最后,利用system与strlen的固定偏移修改strlen的got表,实现权限提升。
摘要由CSDN通过智能技术生成

0x01程序分析

程序开启了PIE,说明got表和plt表位置需要通过泄露得到。

题目一共可以存放下标为0-9一共10个role,游全局变量0x202130存放。Add函数添加role的管理结构,并将该结构指针存放于全局变量0x2020e0中。输入“S”则调用print的函数指针显示role管理结构所指向的内容。

Add函数,为每一个添加的role分配一个结构用于管理,并将该结构地址返回存放于全局变量0x2020e0中。


0x02利用思路

Add函数中第一个gets用来修改name指针存放的位置,第二个gets修改显示的内容。

  泄露heap地址

通过变量覆盖修改role[1]的指针为0x55xxxx0050,将role[1]的信息存放到0x55xxxx0050处,之后泄露heap地址的时候可以通过第二个gets覆盖v7为0x55xxxx0050读取name处存放的堆地址(gets在末尾会自动添加'\x00')。

add('b'*0x28+'qtsqtshh'*2+'b'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值