DASCTF X CBCTF 2022九月挑战赛 bar wp

题目分析

  1. overlap,写入位置为fd+0x10,但写入大小任然是申请大小,可溢出写入下一个chunk的pre_size和size(本题基本没用,因为libc地址已经白给了,没有白给的话可以使用该漏洞泄露libc)

在这里插入图片描述

  1. uaf,因为有uaf的存在导致,我们可以将释放后的chunk再一次进入该函数,通过第一个框的赋值语句改写fd的内容,从而可以使用tcache attck,下面的判断因为uaf所以不会进行free,所以不会触发double free 报错

在这里插入图片描述

  1. libc白给函数

在这里插入图片描述

思路

  1. 通过函数拿到libc_base
  2. 申请4个chunk并释放,在chunk1中写入malloc_hook-0x10
  3. 通过改写fd的漏洞使chunk2的fd指向chunk1的fd+0x10**(也就是malloc_hook-0x10)**

劫持前:
在这里插入图片描述


劫持后:
在这里插入图片描述

  1. 申请3个chunk后,第四个chunk就是malloc_hook-0x10(因为写入是从hook+0x10故-0x10)
  2. 申请第四个chunk同时写入one_gadget
  3. 再申请一个chunk,get shell

注:申请四个chunk,且释放四个chunk的原因是,tcache机制会记录进入tcache的个数,若只释放了三个,我们无法申请出malloc_hook-0x10


from pwn import *
context.update(os='linux',arch='amd64',log_level=
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值