• sctf_2019_easy_heap 利用off-by-null构造出double free来向任一地址写入(经典)


    https://www.cnblogs.com/lemon629/p/13842163.html这个师傅的写的很好

    安全检查

    没贴图了,保护全开

    流程分析

    程序总体来看是个菜单题,不过都是delete没什么问题,有问题的主要是输入函数

    程序首先会分配一块mmap的内存出来,并且有rxz权限

     在edit中,有一个这样的函数,很明显可以看出有off-by-null的漏洞

     漏洞利用

    很经典的一道题ubuntu18上的unlink,通过overlap形成double free在将chunk分配进mmap,接着重复一遍,将malloc hook劫持即可

    1. 首先程序有off-by-null,由于chunk的大小不小于0x400就不会被放入tache,就会直接进入unsorted bin,由于这个原因,在以前的一道题,遇到过一次这样的类型
    2. 我们可以先申请4个chunk,大小分别为0x410,0x68,0x4f0,第四个任意,首先delete掉第0个,然后对chunk1进行编辑覆盖0x4f0的位置pre_inuse位,并且把其pre_size的大小修改为0和1chunk的总和,这样当我们下次在申请chunk时候可以构造double free
    3. 这时我们在申请一个chunk 大小跟先前的第0个一样,构造double free,并且对mmap处的内存进行写入shellcode
    4. 这时我们同理,在构造一个double free,通过unsorted bin中main_arena+96与__malloc_hook在libc-2.27的相差为0x30,所以在填入这个就是__malloc_hook了,之后把mmap的地址填入malloc_hook的位置,在调用add即可
  • 相关阅读:
    Understand 学习
    2021年1月
    查看所有请求
    DB2日期和时间函数汇总
    .getClass和.class
    继承和实现接口的区别
    java8 stream
    Lambda表达式详解
    SQL语句小知识---XML文件中的 CDATA语法
    Java--mapper.xml中常用SQL标签
  • 原文地址:https://www.cnblogs.com/pppyyyzzz/p/14099538.html
Copyright © 2020-2023  润新知