buuctf hacknote

#寻找思路

程序没有开启pie,且got表可以写,canary未开启
从程序可知我们可以对heap进行增删打印操作
在这里插入图片描述


**分析add_note函数可以得知,最多创建5个chunk,创建的时候就可以对其写入内容,note的结构包含2个chunk一个是固定的8字节,用于存放print_note_content的函数地址用于输出包含内容的chunk,另一个用于存放内容 **

在这里插入图片描述


再来分析del_note函数,我们发现,函数先free了包含内容的chunk,后free包含了print_note_content函数地址的chunk,但是并没有清空存放这些chunk地址的notelist数组notelist数组再free chunk之后仍然保存在chunk的地址,这里就是uaf漏洞
在这里插入图片描述


另外我们还发现一个后门函数

在这里插入图片描述

那么思路如下:

  • 首先我们可以想办法将存放print_note_content函数地址的chunk,将其指向改成后门函数,那么我们使用show打印这个chunk的时候,就会调用后门函数就可以拿到shell

#思路整理

  1. 创建两个note大小要求看exp,之后释放这两个note,我们可以发现,存放print_note_content函数地址的chunk,他永远是8字节的内容,我们释放完之后此时fastbin 存放内容如下:

在这里插入图片描述

我们很轻易的发现,chunk0 chunk1释放后,他们存放print_note_content函数地址的chunk都进入了fastbin[0]里面,我们每次申请note的时候都会创建两个chunk,其中一个是固定的8,另外一个也是用户自己决定的

  1. 我们再申请一个note,且该note的包含内容的chunk大小也为8&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值