V8 Exploit level1

zhaojunqi Lv2

V8 Exploit Level1

前言

本系列主要分享pwncollege中的9道chrome中v8引擎的漏洞利用题目。每道题目都会有一个相应的patch文件,作用为在当前v8引擎源码中注入漏洞,我们应该利用注入的漏洞以实现任意代码执行的目的

学习资料:rjk师兄的v8仓库https://github.com/bjrjk/pwn-learning/tree/main/PwnCollege/V8Exploitation包括各个题目的patch文件内容以及exp示例。

PwnCollege的使用

打开题目链接后来到level1,这里提供了“Start”和“Practice”两种模式。Start模式是正式环境,在该环境中我们只有普通shell权限,要利用对应的漏洞才能获取flag;Practice模式是练习环境,允许我们提升到root权限,从而使用gdb等工具调试V8,不过在这里获取flag是没用的,打通后要在正式环境中利用才能获取到Real Flag。

题目文件的用法

题目提供了七个文件,catflag、d8、patch和run这四个文件是和解题有关的,通过./run /path/exp.js来执行getflag获取flag。脚本run调用d8(d8 是 V8 JavaScript 引擎的命令行工具,用于执行 JavaScript 代码)来执行我们的exp.js文件,利用漏洞getflag。

level1:

一.分析patch文件

打开patch文件,总体分析一下,发现主要逻辑在43~55行,主要是使用mmap函数分配一段内存,循环遍历elements数组,并将获取到元素的值转换为double类型,同时复制到mmap分配的内存中,最后执行这段内存中的代码。

最后run一下创建的double数组,即可触发ArrayRun。

二.利用思路

本题利用思路就是先将shellcode(16进制)转换为double类型的数组,当double数组被写入内存中时也就相当于写入了shellcode(因为两者二进制相同)。

这是生成shellcode的python脚本,这个 Python 脚本使用了 pwntools 库来生成并展示一段调用execve("/challage/catflag"NULL,NULL)的机器码。最终输出的效果有多种,包括二进制的形式,十六进制的形式,浮点数的形式等。

二.exp

构造一个double Array将生成的浮点型shellcode填入array中,再执行run函数即可实现利用。

结语

level1主要是让大家了解这一系列v8pwn题目的模式,并且帮助大家了解如何生成shellcode。

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