pwn学习——UseAfterFree hacknote
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
- 释放

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

被折叠的 条评论
为什么被折叠?



