-
-
[原创]0CTF 2015 FreeNote
-
发表于:
2018-4-25 21:18
6072
-
又一个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 Free
和Unlink
搭配实现任意地址读写.
问题: 如何实现Double Free
而不致使程序崩掉呢?
我们知道: Free
一个结构体, 程序会将flag和length
置为0
, free
对应的指针, 但是没有将其置为0
, 于是就出现了如下假设:
如果释放后的对应位置仍然有内容, 那么我们就能二次释放, 而不使程序崩掉.并且释放的位置上出现Unlink
, 我们就改写任意内容.
1. leak heap address && libc base address
结论: 利用了unsorted bin
中是双链表连接.
2. Double Free
简单说明:
3. modify
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课