返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >网络安全渗透测试之musl堆利用技巧
  • 143
分享到

网络安全渗透测试之musl堆利用技巧

2024-04-02 19:04:59 143人浏览 薄情痞子
摘要

目录前言题目分析调试分析malloc_contextmetachunkmeta的释放总结前言 最近比赛出的musl题型的越来越多,不得不学习一波musl的堆利用来应对今后的比赛。这里

前言

最近比赛出的musl题型的越来越多,不得不学习一波musl的堆利用来应对今后的比赛。这里要讲的是musl1.22版本的利用,因为网上可以找到很多审计源码的文章,所以这篇文章是通过一道题目来debug去学习堆的利用技巧,这里用到的是2021第五空间线上赛的notegame题目。

题目分析

1、首先是add函数,使用了calloc,申请的最大size是0x90

image.png

2、接着是delete函数,free之后将指针清空了

image.png

3、然后是edit函数,漏洞就出现在这里,这里存在溢出空字节的漏洞,可以对index清零指向 fake_meta

image.png

4、最后来看这个update函数,这个realloc函数会将原来chunk的内容复制到新的chunk里面,我们可以用这个来进行泄露libc地址

image.png

调试分析

musl的chunk跟glibc的区别就是,chunk头的结构存放了比较少的堆块信息,没有像glibc那样存放了一些指针地址信息,所以我们如果要泄露libc地址的话也是要特定的条件,就是要chunk里面保存着另外一个chunk的指针地址或者其他指针地址的信息,而且也再不能直接改指针去达到任意分配的效果,而是要改chunk头仅有的信息去伪造meta进行任意分配。

malloc_context

add(0x20,'a'*0x20)

image.png

1、secret是用来校验meta域的一个key

2、free_meta_head存放着释放掉的meta,是个单链表结构,这里还没有释放,所以为空

3、active是根据size大小分出来的不同的meta

4、usage_by_class是对应meta的数量

meta

add(0x20,'a'*0x20)
add(0x20,'a'*0x20)
add(0x20,'a'*0x20)
add(0x20,'a'*0x20)
free(3)

image.png

1、prev和next分别是上一个和下一个meta页,这里都指向本身,表示只有一个meta页

2、 mem表示group的地址,它是由多个chunk组成

3、avail_mask表示可以分配的chunk情况,0x3f0=0b01111110000,因为我们已经分配了4个堆块,所以这里表示前四个不可分配。

4、freed_mask表示已经释放的chunk情况,因为我们释放掉了第一个chunk,所以这里的0x1表示的是free掉的第一个chunk

5、last_idx表示最后一个chunk的下标,这里是0x9,总数是0xa个

6、freeable表示已经释放的堆块个数

7、sizeclass表示管理的group的大小

8、maplen如果不为零表示mmap分配的内存页数

chunk

add(0x20,'a'*0x20)
add(0x20,'a'*0x20)
add(0x20,'a'*0x20)
add(0x20,'a'*0x20)
free(3)

image.png

1、表示距离group首地址的偏移分别为0x0、0x30、0x60,系统是根据这个偏移来找到对应的meta地址,所以我们如果能改这个偏移比如把chunk1的偏移置零的话,就能在chunk1-0x10的地方伪造一个meta的指针,而这个地方又是我们可以控制的chunk0的data域,于是我们就可以在任意地方伪造一个meta,不过这个地址必须是跟0x1000对齐的。

2、表示当前chunk的下标,当chunk被free之后会变成0xff

3、表示剩下用户空间的大小,chunk头后面的4个字节跟glibc的prev_size那样可以被上一个chunk复用, 所以我们就可知道我们分配的大小跟chunk大小的关系

0x10:0-0xc
0x20:0xd-0x1c
0x30:0x1d-0x2c
0x40:0x2d-0x3c
...

chunk的分配释放

add(0x50,'a'*0x50)
add(0x50,'a'*0x50)
add(0x50,'a'*0x50)
free(0)
add(0x50,'a'*0x50)

image.png

avail_mask = 0x10=0b10000

freed_mask = 0x1 =0b00001

musl的chunk释放了之后并不会马上分配,这里group里面有5个chunk,先是申请了3个chunk,然后free掉第一个,再次申请的时候并不会把第一个chunk分配出来,而是把group的第四个chunk申请出来,然后对应的avail_mask置零

add(0x50,'a'*0x50)
add(0x50,'a'*0x50)
add(0x50,'a'*0x50)
add(0x50,'a'*0x50)
free(0)
free(1)
free(2)
add(0x50,'a'*0x50)
add(0x50,'a'*0x50)

image.png

avail_mask = 0x6 =0b0110

freed_mask = 0x0 =0b0000

耗尽group的chunk的时候,musl会把释放掉的申请出来,并把其他chunk对应的avail_mask置1

meta的释放

add(0x50,'a'*0x50)
free(0)

image.png

当只有一个chunk是被分配出去的,而freed_mask=0,我们把这个chunk给free掉之后,系统会回收整块meta空间

add(0x50,'a'*0x50)
add(0x50,'a'*0x50)
add(0x50,'a'*0x50)
add(0x50,'a'*0x50)
add(0x50,'a'*0x50)
free(0)
free(1)
free(2)
free(3)
free(4)

image.png

总结起来,就是说avail_mask |freed_mask的结果是满状态的时候,就会释放这个meta。

总结

本篇先通过debug的方法来简单阐述musl堆块的结构,后续再讲如何对它进行利用。

更多关于网络安全渗透测试musl堆的资料请关注编程网其它相关文章!

--结束END--

本文标题: 网络安全渗透测试之musl堆利用技巧

本文链接: https://lsjlt.com/news/139767.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 网络安全渗透测试之musl堆利用技巧
    目录前言题目分析调试分析malloc_contextmetachunkmeta的释放总结前言 最近比赛出的musl题型的越来越多,不得不学习一波musl的堆利用来应对今后的比赛。这里...
    99+
    2024-04-02
  • 网络安全渗透测试使用goby检测log4j漏洞
    目录一、前言二、漏洞复现三、goby poc编写expJson部分自定义POC函数部分一、前言 前段时间的Log4j漏洞影响很广泛,网上已经公开了很多地方的利用方式,而平时用goby...
    99+
    2024-04-02
  • 网站渗透测试安全检测方案
    许多客户在网站,以及APP上线的同时,都会提前的对网站进行全面的渗透测试以及安全检测,提前检测出存在的网站漏洞,以免后期网站发展过程中出现重大的经济损失,前段时间有客户找到我们SINE安全公司做渗透测试服务,在此我们将把对客户的整个渗透测试...
    99+
    2023-06-03
  • 【python渗透测试】python在渗透测试中的利用(完全版,持续中出)
    跟着gpt学习python在渗透测试中的利用 🔥系列专栏:python渗透测试 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 &#...
    99+
    2023-10-12
    python 开发语言
  • 2023年网络安全比赛--网页渗透测试中职组(超详细)
    一、竞赛时间 180分钟 共计3小时 二、竞赛阶段 1.访问服务器网站目录1,根据页面信息完成条件,将页面中的flag提交; 2.访问服务器网站目录2,根据页面信息完成条件,将页面中的flag提交; ...
    99+
    2023-09-03
    PHP代码审计 网络爬虫 网站渗透 md5碰撞 BP抓包
  • 网站安全渗透测试检测认证登录分析
    圣诞节很快就要到了,对渗透测试的热情仍然有增无减。我们SINE安全在此为用户认证登录安全制定一个全面的检测方法和要点Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 75...
    99+
    2023-06-03
  • 渗透测试网站安全漏洞检测大体方法
    近期对平台安全渗透测试中遇到有JAVA+mysql架构的网站,针对此架构我们Sine安全渗透工程师整理了下具体的漏洞检测方法和防护修复方法,很多像执行框架漏洞获取到系统权限,以及跨权限写入木马后门等等操作,希望大家在渗透测试的道路中发现更多...
    99+
    2023-06-03
  • 网络安全渗透测试小程序抓包流程步骤详解
    目录小程序测试流程搜索目标小程序小程序主体信息确认小程序包获取PC端windows端获取小程序包流程移动端解包调试抓包小程序测试流程 分为两个方面,解包可以挖掘信息泄露问题、隐藏的接...
    99+
    2024-04-02
  • 2023年中职组网络安全竞赛——综合渗透测试解析
    综合渗透测试 题目如下: PS:需求环境可私信博主,求个三连吧! 解析如下: 通过本地PC中的渗透测试平台KALI2020对服务器场景进行渗透攻击,获取到RSYNC服务所开放的端口,将RSYNC服务开放的端口数值进行MD5加密后作为FL...
    99+
    2023-10-10
    服务器 linux php web安全
  • 网络安全漏洞渗透测试之文件上传绕过思路案例详解
    目录引言案例一案例二案例三案例四其它场景&总结引言 分享一些文件上传绕过的思路,下文内容多包含实战图片,所以打码会非常严重,可多看文字表达;本文仅用于交流学习, 由于传播、利...
    99+
    2024-04-02
  • 网络安全漏洞渗透测试之文件上传绕过思路案例分析
    本篇内容介绍了“网络安全漏洞渗透测试之文件上传绕过思路案例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!案例一一次项目渗透时,通过往pn...
    99+
    2023-06-29
  • 网站安全公司 渗透测试基础知识点大全
    天气变冷了,但对于渗透测试行业的热度高于天气的温度,说明全国互联网针对网站安全问题的重视性越来越高,对此我们专业的网站安全公司Sine安全对渗透测试的知识必知点详情的给大家讲解一下,对今后网站或APP的安全性提高有着特别大的作用,只有这样才...
    99+
    2023-06-03
  • 2023年中职组网络安全竞赛——web服务渗透测试解析
    web服务渗透测试(100分) 题目如下: 解析如下: PS:任务环境可以私信博主,求个三连吧! 通过本地PC中的渗透测试平台KALI2020对靶机进行WEB渗透,找到页面内的文件上传漏洞并且尝试进行上传攻击,将文件上传成功后的页面回...
    99+
    2023-09-28
    php 安全 web安全
  • 网络安全渗透测试小程序抓包流程的示例分析
    小编给大家分享一下网络安全渗透测试小程序抓包流程的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!小程序测试流程分为两个方面,解包可以挖掘信息泄露问题、隐藏...
    99+
    2023-06-29
  • 多个角度分析渗透测试网站安全性能
    前不久接到朋友的寻求帮助(前提必须要有授权许可,可不能乱渗透测试),就是说有个站搞不了了,让我看看能否协助整一下;恰好近期应急处置结束了在看系统日志,看的有点苦恼,因此便接下了这一工作,提升点快乐。网站信息收集,得到手的总体目标是一个ip地...
    99+
    2023-06-03
  • 网络安全渗透测试反序列化漏洞分析与复现工作
    目录0x00 概述0x01 服务分析0x02 漏洞分析0x03 POC构造0x04 总结0x00 概述 GENESIS64...
    99+
    2024-04-02
  • 网站安全渗透测试该如何增加就业概率
    一、兴趣爱好大学本科环节的学习培训最好能以兴趣爱好为导向性,如果你并不是反感电子计算机,这好多个方向应当多多少少都能激起你的兴趣爱好,技术实质是互通的。可是,依据我的工作经验,大部分人沒有兴趣爱好,不清楚自身喜欢什么,仿佛干什么都可以,这类...
    99+
    2023-06-03
  • 2023年广东省网络安全竞赛——Web 渗透测试解析(超级详细)
    任务一:Web 渗透测试 任务环境说明: √ 服务器场景:Server03 √ 服务器场景操作系统:未知(关闭连接) 通过本地 PC 中的渗透测试平台 Kali 对靶机进行 WEB 渗透,找到页面内的文件上传漏洞并且尝试进行上传攻击,将文件...
    99+
    2023-09-09
    php 开发语言 web安全
  • 网络安全渗透测试反序列化漏洞分析与复现的方法
    这篇文章主要介绍了网络安全渗透测试反序列化漏洞分析与复现的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇网络安全渗透测试反序列化漏洞分析与复现的方法文章都会有所收获,下面我们一起来看看吧。0x00...
    99+
    2023-06-29
  • 【十年网络安全工程师整理】—100渗透测试工具使用方法介绍
     渗透测试是指渗透人员在不同的位置(比如从内网、从外网等位置)利用各种手段对 某个特定网络进行测试,以期发现和挖掘系统中存在的漏洞,然后输出渗透测试报告, 并提交给网络所有者。网络所有者根据渗透人员提供的渗透测试报告, 可以清晰知...
    99+
    2023-09-06
    python 运维 测试 安全 php
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作