ciscn_2019_en_3
首先写在前面的话,这道题找到关键点之后不能说十分简单,只能说非常的简单,但是这个题还是卡了我不久时间,最开始想了半天怎么泄露出libc地址,学过的方法全是不行,血压当场up。但是看了wp一眼之后就能秒杀了,当场高血压。

函数分析:


这其中本来是4个函数,但是show()和edit()函数没有东西,所以命名就省略了
-
Func_ADD():

-
Func_Free():

FREE的地方很明显,他是从bss上存了一个地址,然后用那个地方free,并且没有将值清零,所以说有很明显的Double_Free
思路分析:
既然说这道题目,已经有了很明显的Double_Free,我们的任务就只有一个了,就是寻找到到libc_base,然后任意地址写,就完事了。但是这个地方如果不看前面的puts函数,只注意后面的堆,那是没有办法做出来的,一开始这里碰壁了很久,就是泄露不出来。然后看了其他师傅的WP发现有个puts函数在这,输入name之后就能很简单的得到一个地址

然后就按照一般uaf的做法写出来就ok了
# -*- coding: UTF-8 -*-
from pwn import *
from LibcSearcher import *
context.log_level = 'debug'
local_file = './ciscn_2019_en_3'
libc = ELF('/home/yjc/Desktop/Libc/U18/libc-2.27-64.so')
select =

本文详细介绍了CISCN_2019中的一道题目,涉及Double_Free漏洞。作者通过分析Func_Init和Func_Execute等函数,揭示了如何利用Double_Free进行攻击。关键在于找到puts函数泄露的libc地址,从而实现任意地址写,完成漏洞利用。虽然题目看似简单,但作者指出对这类漏洞的不熟悉导致了解题时间延长,强调了理解和掌握高危函数如puts、gets的重要性。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mZLlkRAB-1647271235325)(F:\MarkDownS\HEAP\ciscn_2019_en_3\ciscn_2019_en_3\image-20220314230635223.png)]](https://i-blog.csdnimg.cn/blog_migrate/c10fa69c06fdb055d30dcd783764a7b2.png)
最低0.47元/天 解锁文章
345





