Home avatar

Wings

V8 Pwn Basics 2: TurboFan

众所周知, JS 是解释语言, 解析完 AST 后生成字节码, 然后在 VM 上解释运行. 当一个函数运行了很多次之后, 就会尝试编译成二进制机器码, 从而加速执行. 本文将从字节码开始, 介绍 V8 是如何进行优化和编译的.

2019 *CTF Pwn OOB

怎么有人三月份入了个坑然后就没学了啊. 最近某比赛有个 Webkit, 抄了个 exp 改改出了, 信心找回来了, 这就开始学 v8.

Kernel Pwn Syscall userfaultfd and Syscall setxattr

userfaultfd 是一个系统调用, 可以用来自定义 handler 处理缺页等情况. 简单来说是通过新建一个线程, 然后监视一个页面. 在任何时刻出现了缺页的情况, 触发缺页的线程挂起, 监视线程进行处理, 处理完毕后唤醒之前挂起的线程.

在 CTF 题中通常用来卡条件竞争. 当内核模块中有 copy from/to user 的时候, 内核模块会访问用户的空间. 如果我们传入的是一个被 uffd 监视的地址, 那么这个线程将会被挂起直到处理结束. 这样就能够控制内核中线程的执行顺序, 从而更好的达到想要的竞争效果.

uffd 使用模板如下: