V8-Exploit-Level7
V8 Exploit Level7
level7:
一.分析patch文件
删除deoptimize操作
二.利用思路
patch文件中删除了deoptimize相关操作,导致TurBoFan生成的JIT代码中,在检测到一个object的map不同时,不会进行deoptimize操作。可通过修改对象类型进而在通过利用类型混淆构造addressof和fakeobj原语进而到达任意代码执行。
三.exp
核心代码如下图所示(根据Array.functionMap函数构造addressof原语和fakeobj原语)
addressof和fakeobj原语的构造
addressof:
首先进行训练,让编译器认为arr的数组类型为double类型,接着再让arr[1]=obj这样会改变数组类型为object类型并会像level6那种方式改变在内存当中的布局,紧接着以double的方式读取对象数组,则可完成addressof原语。
fakeobj:
同上,最终以对象形式返回浮点数即可。
任意代码执行
接着可根据addressof原语和fakeobj原语构造任意地址读写原语,有了任意地址读写原语以及addressof原语,即可用level2中的方法实现任意代码执行。
结语
level7中利用deoptimize可以构造addressof和fakeobj原语,核心还是level6当中提到的数组类型混淆的方法来实现。有问题欢迎和我多多交流。
- Title: V8-Exploit-Level7
- Author: zhaojunqi
- Created at : 2024-12-11 20:46:18
- Updated at : 2025-10-17 17:31:02
- Link: https://redefine.ohevan.com/2024/12/11/V8-Exploit-Level7/
- License: This work is licensed under CC BY-NC-SA 4.0.
Comments