0x00 Inline Cache🗺️概念Inline Cache 是一种基于历史访问模式的缓存技术,主要用于加速以下操作:
属性访问(如 obj.prop)
方法调用(如 obj.method())
属性设置(如 obj.prop = value)
全局变量访问
那么这种缓存是怎么实现的?🤔其实就是之前提到的Hidden Class(也就是Map),以属性访问为例,对于一个obj的...
0x00 环境配置🔧oob.diff1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071diff --git a/src/bootstrapper.cc b/src/bootst...
0x00 前言💬下面说的都是chrome80以前的v8,无sandbox、指针压缩
image-20241115181353869
0x01 基础🪨JS Engine CTF的常见模式
由出题⼈⾃⼰编写的patch引⼊的漏洞
历史漏洞的CVE被出题⼈重新引⼊
攻略方法
创建⼀个⽤于调试的js环境,如果有出题⼈提供的引⼊漏洞的patch,那么打上这个patch
分析这个patch并...
0x00 序言校赛出的一道java的wp,记录一下
0x01 分析controller部分总共就两个,一个没什么用的欢迎界面,以及一个接受base64编码后的数据并进行解码反序列化的/input
12345678910111213@RequestMapping("/input") public String read(@RequestParam Strin...
0x00 序言校赛出的一道php的wp,记录一下
0x01 解析考点:反序列化、php8新特性、软链接读文件、opcache伪造
首先是反序列化,源码中给了A、B、C三个类,入口点是C的wakeup,可以触发$this->file的toString,选择B类的toString触发。B类的toString是链式调用,可以用于触发get,跟进的B的get中的$func()可以设置funct...
指针分析Foundationsrules指针分析需要关注的域
image-20231029160720840
变量 V
属性 F
对象 O
对象的成员属性
指针 包括变量+对象的field
处理规则image-20231029162403026
横线上是前提条件,下面是推到出的
New 直接把x指向oi
Assign y指向的加入x的集合
Store x指向oi,y指向oj,同时...
ezBytes0x00 序言校赛出的一道智能合约的wp,记录一下
0x01 环境基本配置钱包连接私链首先需要准备一个metamask(一个钱包软件,浏览器插件),随意注册一个账号即可(网上教程很多,这里不赘述,可以参考https://www.bilibili.com/video/BV1Ca411n7ta?p=7&vd_source=5ec02b685bc73487523c9c6794...
过程间分析寻找可能被调用的方法Dispatch(c,m) c是类,m是方法
两种返回值
c.m
c’.m(c’是c的父类,当然如果这个父类也没有method方法,还会继续往上找父类的父类)
special call对应唯一方法,virtual call会调用dispatch
Resolve(cs)image-20231017185458682
比较tricky的virtual,对c...
数据流分析数据流主要研究数据怎么在CFG(程序流程图 BB+边)中流动
基本术语input and output states汇聚的时候那个符号没有限制,可能是交集也可能是并集
83744840e76eb367512eaae50ced66b9_0
states会被关联一个value
Reaching Definitions注意:对于Entry的IN和OUT不作更新
根据算法得出在每个边里...
中间表示编译过程源代码
|词法分析
生成tokens
|语法分析
AST抽象语法树
|语义分析(类型检查之类的,编译器做的比较简单)
修饰后的AST语法树
|转换器
IR(可以进行静态分析)
|生成器
机器码
AST vs IRAST将代码拆解成树形
可以快速进行类型检查
看不出控制流信息
IR(静态分析适用)– 3-Address Code将代码拆解成一行一行的...