V8 Exploit Level5

zhaojunqi Lv2

V8 Exploit Level5

level5:

一.分析patch文件

给出一个offbyone函数

二.利用思路

根据Array.offbyone函数构造Array.setlength函数进而利用level 4中的利用思路实现任意代码执行。

三.exp

核心代码如下图所示(通过伪造对象的方式构造任意地址读写原语)

构造出来的数据结构在内存当中的情况如下图所示,忘记了的话可以回顾v8数据结构简略图

根据Heap Fengshui可得,offByOneArr紧邻着corrupted_obj,因此:
offByOneArr.offByOne(); //获取corrupted_obj的map和properties(共8B)
取出高4B(即properties)根据调试,可知offByOneArr的首地址为该字段-0x7c,接着将offByOneArr的地址赋值给corrupted_obj的properties处,接着操纵corrupted_obj的outofline2域即为操纵offByOneArr的length域(都是第四个位置),即可达到修改数组长度的效果。

任意代码执行

接着可根据setlength来构造addressof原语和fakeobj原语,进而构造任意地址读写原语,有了任意地址读写原语以及addressof原语,即可用level2中的方法实现任意代码执行。

结语

level5中利用了Array.offByOne()来构造Array.setlenth(),进而通过越界读写数组构造addressof原语和fakeobj原语进而利用level3中的方式,完成了任意代码执行,如果有问题欢迎多多交流。

  • Title: V8 Exploit Level5
  • Author: zhaojunqi
  • Created at : 2024-12-11 17:35:50
  • Updated at : 2025-10-17 17:31:04
  • Link: https://redefine.ohevan.com/2024/12/11/V8-Exploit-Level5/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments