[BUUCTF]PWN——roarctf_2019_easy_pwn

15 篇文章 0 订阅
11 篇文章 0 订阅

白天睡觉,晚上来写道题。

这道题涉及了unsortedbins,malloc_hook,堆溢出。

heap的菜单选项常规题,做到目前为止,主要是两个思路:

先check,根据RELRO。如果为full,那么就需要malloc_hook。如果为partial,就直接更改got表就可以了。

在create函数中可以明显看出来这是个结构体

一个结构体有24个字节,前8个为标志位,中间8个size位,后8个是alloc出来的chunk的指针。

(alloc和malloc不同的是 alloc的free后会清空用户数据区)

其中a1 为基地址,我一开始还打算去找这个a1,

但是看到这个a1的初始化。

这里面buf是随机数字,所以a1搜寻未果。

fill函数中,没有根据chunk的大小来限制写入大小。所以存在着溢出漏洞。

主要思路就是,根据unsorted bin 中的fd。利用main_arean泄露libc(这个还没有查阅资料)

然后利用之前布置好的盖在小块的大块来dump出来。

接下来是漏洞利用。钩子函数详细,可以查阅这个资料

https://blog.csdn.net/qq_41453285/article/details/99315504

里面介绍的很清晰,具体思路就是,在钩子函数之前有一个为末位的一块内存区域,因为fastbin中没有对齐限制。所以我们可以修改fastbin中最后一个的fd指针,指向这里,让fastbin将它加入,然后在malloc一下,之后就可以通过溢出(具体溢出长度,上面那个资料中有详细的介绍)来修改malloc_hook 处的内容:malloc函数执行的时候会先检测__malloc_hook是否为空,如果不为空就执行__mallochook。所以这时候把malloc_hook 修改为一个one_gadget的地址(好像是存在这几个固定的地址。只需要libc的基地址加上这个偏移)

那么最后再malloc一个chunk就可以触发 one_gadget。

果然还是多做题才能多涨姿势。

但是套路应该就是这几个套路了。

难题可能在泄露libc上下难度,目前我觉得应该就是这几个套路了,后续继续学习新的漏洞利用手段。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值