pwn学习——UseAfterFree hacknote

这篇博客介绍了关于pwn技术中的UseAfterFree漏洞利用。通过反编译代码,作者展示了如何利用添加、删除和打印笔记功能来构造特定的内存布局。在删除笔记后不置NULL,导致UseAfterFree情况,然后通过重新分配内存块并覆盖特定指针,最终使得程序调用预设的函数地址,从而获取权限。提供的exploit代码详细说明了整个过程。

1. 反编译看一下源代码

在这里插入图片描述
可以看到大概有四个功能
add
del
print
menu
另外还有后门函数magic
在这里插入图片描述

2.add_note

在这里插入图片描述
可以看到在添加note的时候,每一个note有两个部分
第一个部份是一个put函数
第二个部分存放的是real_content
在这里插入图片描述
一个note节点内部结构是这样的

3.print_note

在这里插入图片描述
调用put函数进行输出

4.del_note

delete_note 会根据给定的索引来释放对应的 note。但是值得注意的是,在 删除的时候,只是单纯进行了 free,而没有设置为 NULL,那么显然,这里是存在 Use After Free 的情况的。
在这里插入图片描述
free之后没有置NULL

5.exp

显然 note 是一个 fastbin chunk(大小为 16 字节)。我们的目的是希望一个 note 的 put 字段为 magic 的函数地址,那么我们必须想办法让某个 note 的 put 指针被覆盖为 magic 地址。由于程序中只有唯一的地方对 put 进行赋值。所以我们必须利用写 real content 的时候来进行覆盖。具体采用的思路如下

  • 申请 note0,real content size 为 16(大小与 note 大小所在的 bin 不一样即可)
  • 申请 note1,real content size 为 16(大小与 note 大小所在的 bin 不一样即可)
  • 释放 note0
  • 释放
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

==Microsoft==

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值