V8-Exploit-Level6

zhaojunqi Lv2

V8 Exploit Level6

level6:

一.分析patch文件

给出一个Array.functionMap函数

二.利用思路

根据Array.functionMap函数构造addressof原语和fakeobj原语,进而利用level 3中的利用思路实现任意代码执行。

三.exp

核心代码如下图所示(根据Array.functionMap函数构造addressof原语和fakeobj原语)

核心:数组类型混淆前后数组在内存当中的变化

arr[2]=obj前后的arr在内存当中的情况

addressof和fakeobj原语的构造

addressof:
将arr[2]=obj时,arr会变为object类型,此时第二次以double的方式访问原本的arr[1]的位置时,取到的数据的低4位即为object的地址
fakeobj:
arr[0]赋值为{}则arr变为object类型,则此时将c2f(ptr(addr), HeapNumber_map)赋值到arr[0]中,则访问arr[0]时即为地址为addr的一个对象。

任意代码执行

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

结语

level6中patch文件是应该着重分析的,利用了数组类型混淆,将obj赋值给double数组后,double数组的内部结构会发生变化,但是patch文件中每次依然是每次以8B的方式进行读写,进而导致构造addressof和fakeobj原语。level6应当一步步耐心分析执行过程(本文没有详细指出),有问题欢迎和我多多交流。

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