0%

uaf

Use After Free
原理:

使用被释放的内存块。其实当一个内存块被释放之后重新使用有如下几种情况:

  1. 内存块被释放后,其对应的指针被设置为NULL,再次使用时程序会崩溃
  2. 内存块被释放后,其对应的指针没有被设置为NULL,在它下一次被使用之前,没有代码对这块内存块进行修改,那么程序有可能可以正常运转
  3. 内存块被释放后,其对应的指针没有被设置为NULL,但是在下一次使用之前,有代码对这块内存进行了修改,那么当程序再次使用这块内存时,就很有可能出现问题

我们一般所指的Use After Free漏洞主要是后两种,一般将释放后没有被设置为NULL的内存指针为dangling pointer

Tips:

有且仅有指针不置空,才能做到对其的二次利用(free可以,但指针置空不可)。

先被释放的往往最后启用,最后释放往往最先启用。

被释放后,user_date的内容不会被清除,会被保留。(可利用此点‘更改’不能改动的chunk)