当前位置:   article > 正文

DASCTF X CBCTF 2022九月挑战赛 bar wp_dasctf 九月

dasctf 九月

题目分析

  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='debug'
  • 1
  • 2
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/176676
推荐阅读
相关标签
  

闽ICP备14008679号