当前位置: 首页 > news >正文

使用realloc函数来调整栈帧使one_gadget生效

使用realloc函数来调整栈帧使one_gadget生效

前言

我们一般使用one_gadget这个工具帮助我们找ogg(即one gadget)在libc的偏移,他会检索出libc中可用的ogg以及其需要满足的条件,如图

image-20260205164434413

一般我们通过逐一尝试的办法看是否可以使用ogg,现在通过调试我们来看下ogg是否能生效?

注:本文以2.23的libc版本举例说明

通过调试确定ogg

背景:已经将__malloc_hook改成ogg

image-20260205165645171

程序此时准备执行calloc函数

image-20260205165829742

单步执行到图示位置(不同libc版本的reallo函数具体汇编不一样,这里请具体情况具体分析

image-20260205165937685

再si进去后查看栈帧,对比ogg条件

image-20260205170137426

如图,因此按道理说使没有能使用的ogg的,因此这种情况下我们可以人为的去调整栈帧,这就用到了realloc函数

用realloc函数调整栈帧

前置知识

realloc 在库函数中的作用是重新调整 malloc 或 calloc 所分配的堆大小。它和 malloc 函数一样有 hook 函数,当 hook 函数不为空时,就会跳转运行 hook 函数(和 malloc_hook 一样的)。

看看 realloc 的汇编代码:(可以把 libc 拖到 ida 中看,也可以泄露地址后 gdb 调试查看 x /20i [addr]

.text:00000000000846C0 realloc         proc near               ; DATA XREF: LOAD:0000000000006BA0↑o
.text:00000000000846C0 ; __unwind {
.text:00000000000846C0                 push    r15             ; Alternative name is '__libc_realloc'
.text:00000000000846C2                 push    r14
.text:00000000000846C4                 push    r13
.text:00000000000846C6                 push    r12
.text:00000000000846C8                 mov     r13, rsi
.text:00000000000846CB                 push    rbp
.text:00000000000846CC                 push    rbx
.text:00000000000846CD                 mov     rbx, rdi
.text:00000000000846D0                 sub     rsp, 38h
.text:00000000000846D4                 mov     rax, cs:__realloc_hook_ptr
.text:00000000000846DB                 mov     rax, [rax]
.text:00000000000846DE                 test    rax, rax
.text:00000000000846E1                 jnz     loc_848E8        ; 跳转执行 realloc_hook
.text:00000000000846E7                 test    rsi, rsi
.text:00000000000846EA                 jnz     short loc_846F5
.text:00000000000846EC                 test    rdi, rdi
.text:00000000000846EF                 jnz     loc_84960

可以发现在函数开头有很多调整rsp的汇编,如push,sub rsp 。我们就是利用这些 push 调整栈帧。push 的数量发生变化会影响 rsp 的地址,这样就可以控制 rsp 的取值,从而满足 onegadget 的执行条件。

因此我们通常将malloc_hook 劫持为 realloc ,realloc_hook 劫持为 onegadget ,实际运行顺序:

malloc -> malloc_hook -> realloc -> realloc_hook -> onegadget

这样就能经过 realloc 调整栈帧后再运行 onegadget 。实际情况中,并不是直接劫持 malloc_hook 为 realloc ,而是要加上一定的偏移,也就是调整 push 的数量,让栈帧结构满足 onegadget 运行。

实操

看汇编,一共有6个push指令和一个sub rsp,0x38指令,同时隐藏的还有call realloc,因此最多可以使栈帧抬高(rsp向低地址移动)6*0x8+0x38+0x8=0x70个字节,最少是0x40字节。

假如我们使用0xf1247这个ogg,需要满足[rsp+0x70]==null,那我们在[rsp+0x70]低地址0x40~0x70位置找0,如图

image-20260205171948042

pwndbg> p/x 0x7fffffffde08-0x7fffffffdda8
$1 = 0x60

0x60=0x38+5*0x8,因此要执行一个call,4个push,一个sub指令,所以从realloc+4处开始执行

效果如图

image-20260205173216800

总结

在实际操作中,我们可以通过one_gadget这个工具找ogg,然后逐一尝试,有时可能发现即使不满足条件也可能成功,因为one_gadget为我们列出来的是必要条件,也就是说,要是满足了条件,就ogg就可以生效,但反之,可以生效的ogg不一定满足条件,所以我们老说ogg起作用是看脸的。那充分必要条件是什么呢?由于不是本文重点就在这里一笔带过的说一下,具体可以看参考文章一。所以在实操中通过爆破的方式也许是更有效的一种方式

参考文章

使用realloc函数来调整栈帧让one_gadget生效 - ZikH26 - 博客园)

realloc - SkYe Wiki

http://www.jsqmd.com/news/346260/

相关文章:

  • 如何处理 React 中事件处理程序的绑定问题
  • Linux内核全景解析:核心组成与子系统架构深度指南
  • 如何解决React中props未更新的问题
  • 2026直达大巴车推荐:吴江区宜帆顺票务代理服务部,红河/曲靖/威信/毕节等线路全覆盖 - 品牌推荐官
  • 新手必看京东e卡提现到支付宝的四种精心挑选高效方式 - 淘淘收小程序
  • 别再为一个气体终端写三套对接代码了
  • 嵌入式C编程中volatile 的使用规则
  • 2026年果酱生产厂家实力推荐:山东晶荣食品,无花果/苹果/桑葚/蓝莓等全品类果酱专业供应 - 品牌推荐官
  • 2026中国五大摄影培训学校排行榜 零基础到职业IP运营、短视频培训、视频剪辑培训进阶的优质之选 - 深度智识库
  • 收藏!AI入行避坑指南:招聘乱象背后,小白/程序员如何少走弯路
  • 2026建材市场管材深度盘点:PE/HDPE/复合/PVC/波纹管五大实力品牌解析 - 深度智识库
  • vscode git 提交关闭Husky 或者 eslint校验
  • 计算几何-旋转卡壳两种实现方案(兼P1452题解
  • 2026年废纸打包机厂家推荐:江苏旭鹏智能科技液压/自动/全自动/卧式废纸打包机设备全解析 - 品牌推荐官
  • 沃尔玛23与86开头购物卡有和区别,可以回收吗? - 淘淘收小程序
  • 2026年全国道路标识牌厂家哪家专业?聚焦合规适配与区域服务优势 侧重要求落地适配性 - 深度智识库
  • 合肥市英语雅思培训机构推荐|2026权威测评出国雅思辅导机构口碑榜单 - 老周说教育
  • day 22
  • 2026年盘扣脚手架厂家权威推荐:防腐/镀锌/重型/移动/建筑盘扣脚手架源头厂家精选 - 品牌推荐官
  • 在ROS2上运行ORB-SLAM3报错Error: “double free or corruption (out)”
  • 2026年面膜品牌推荐:北京易颜堂生物科技有限公司,多款修护补水面膜满足不同肤质需求 - 品牌推荐官
  • HoloOcean水下机器人模拟器:从1.0到2.0的重大升级
  • 全屋定制如何选择封边机? - 星辉数控
  • 2026年卧式螺旋离心设备厂家推荐:浙江中润环保工程有限公司全系卧螺离心机解决方案 - 品牌推荐官
  • 2026年叛逆孩子教育机构推荐:湖北宏志达青少年心理咨询有限公司,专业矫正叛逆行为 - 品牌推荐官
  • 液压机械手plc s7-1200 博图v15.1 以镗孔专用机床加工零件的上料、下料为例,机械...
  • 2026年祛痘祛斑加盟推荐:蚌埠颜胜玉美容服务有限公司,祛斑产品招商与加盟优选方案 - 品牌推荐官
  • 短效代理IP有哪些使用场景?
  • 自适应阻抗控制仿真程序与迭代自适应控制实现
  • 2026年AI摄影培训学校哪家强?五大优质院校助力影像职业进阶 - 深度智识库