首页
社区
课程
招聘
[原创]0CTF 2015 FreeNote
发表于: 2018-4-25 21:18 6071

[原创]0CTF 2015 FreeNote

2018-4-25 21:18
6071

又一个Double Free类型的题, 虽说是Double Free, 但利用方式不一样, 有需要的看一下.

1. MENU

2.List

3.New

4.Edit

5.Delete

Tips

    个人觉得漏洞的发现也是一个较为重要的过程, 需要重视起来, 相当于渗透测试中的信息收集.对这个程序越是熟悉, 我们越是能够发现和利用漏洞.

0.Struct

1. New

通过对程序的观察, 发现程序会malloc最小的数值, 0x80, 然后是0x180
. 程序将这些flag, length, s存放在堆中.

2. Delete

没有对相应的指针作验证, 出现Double Free

    思路: 总体思路还是和SleepyHolder一样, Double FreeUnlink搭配实现任意地址读写.

    问题: 如何实现Double Free而不致使程序崩掉呢?

  我们知道: Free一个结构体, 程序会将flag和length置为0, free对应的指针, 但是没有将其置为0, 于是就出现了如下假设:

  如果释放后的对应位置仍然有内容, 那么我们就能二次释放, 而不使程序崩掉.并且释放的位置上出现Unlink, 我们就改写任意内容.

1. leak heap address && libc base address

结论: 利用了unsorted bin中是双链表连接.

2. Double Free

简单说明:

3. modify


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 1
支持
分享
最新回复 (1)
雪    币: 1218
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
学习+1
2018-8-6 08:27
0
游客
登录 | 注册 方可回帖
返回
//