从0ctf2018 babystack学习return to dl-resolve

0x01程序分析

首先查看main函数,比较简单,调用了alarmsub_80483B,进入sub_80483B看看。


sub_80483B的作用是读取0x40个字节到ebp-40处,这里显然存在栈溢出漏洞。

发现只开了一个栈不可执行,于是想构造rop链。但是整个文件搜索下来也没有发现什么有价值的gadget。


0x02  return to dl-resolve知识学习

玩过pwn的赛棍都知道,pwn题一般都会提供一个libc文件用于泄露函数的地址,在这里介绍一个不依赖于libc的方法。

这里还是以我们的0ctf2018 babystack为例进行讲解。

我们知道,在ELF文件中,库函数的调用都是延迟绑定的,例如当第一次执行printf时,首先是将printf的地址解析出来填到printf的got表项中,第二次运行时,直接根据printf的got表里面的地址调用相应函数,称为延迟绑定。

查看ELF文件.dynamic section里面的运行时函数解析地址:


其中JMPREL保存的是.rel.plt 表的入口地址,该表用于运行时函数重定位

来看一下.rel.plt表中的内容。PLTRELSZ是.rel.plt表的大小为24字节,RELENT为每个.rel.plt表项的大小为8字节,所以.rel.plt中有3个表项。

这些表项为ELF32_Rel类型的数据结构。其中r_of

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值