V8-Hole漏洞
对于V8 Hole相关内容的学习V8 Map对象的分析可以看这篇搬运:V8-Map对象 V8源码分析在v8中,JSMap的内存布局如下: Map:每个对象会有的,包含对象属性的shape; FixedArray Length:整个OrderdHashMap的大小 elements:存在的entry的数量 deleteds:删除的entry数量 buckets:buckets数量考虑如下代码:12345678910111213141516171819var map = new Map(); %DebugPrint(map); readline(); map.set(1, 1); map.set(2, 1); map.set(3, 1); map.set(4, 1); %DebugPrint(map); readline(); map.delete(3); %DebugPrint(map); readline(); map.set(5, 1); %DebugPrint(map); ...
V8 Code Caching
概述v8使用JIT执行JavaScript代码,因此在执行前需要解析并编译,由于每次执行前都需要做此操作的话开销过大,引入code cache来优化(version >= 4.2)。script 第一次执行后,会保存其cache data。下一次v8编译相同script时(不同的v8实例也可以使用)则会使用cache data。一个早期版本的code cache功能api测试用例:testcase当v8编译一个script脚本后,可以通过添加v8::ScriptCompiler::kProduceCodeCache选项来生成相应的cache data用于后续的编译。如果编译成功,则会将cache data添加到source object并且可以通过调用v8::ScriptCompiler::Source::GetCacheData获取。 注:v8::ScriptCompiler::kProduceCodeCache被废弃,新api:v8::ScriptCompiler::GetCodeCache 在后续的编译中,先前生成的cache...
GoogleCTF 2022 d8 Write Up
有一位大佬分享了当时的wp思路,网上似乎没找到中文版的wp,在此做翻译记录和学习。 概览题目目录文件: 12345678910base ❯ tree -L 1.├── build.Dockerfile├── challenge├── launcher.py├── Makefile.txt├── snapshot_blob.bin└── v8.patch0 directories, 6 files 根据v8.patch文件可知定义了/srv/challenge/runner.cc文件作为题目。 12345-DEFINE_BOOL(wasm_write_protect_code_memory, true,+DEFINE_BOOL(wasm_write_protect_code_memory, false, "write protect code memory on the wasm native heap with mprotect") 主要逻辑为challenge二进制程序接收用户输入(大小不超过65536)binary...
V8 Map对象学习
学习一下V8的Map对象,以下基本为对参考链接的文章的翻译转载。 引入ECMAScript 2015,也被成为ES6,引入了很多内置类型,例如Map、Set、WeakMap、WeakSet。他们是对标准JS库的扩展并在其他库,应用以及Node.js Core中广泛使用。今天我们关注于Map类型并且尝试去理解V8中的该类型实现细节,同时做一些总结。规范并没有规定用于实现Map类型的精确算法,而是为可能的实现以及预期的性能特征提供了一些建议: Map object must be implemented using either hash tables or other mechanisms that, on average, provide access times that are sublinear on the number of elements in the collection. The data structures used in this Map objects specification is only intended to describe the...
LibAFL论文笔记
论文概述本文提出一个新的工具LibAFL,旨在将AFL工具模块化,方便后续各项工作以及改进的集成。 看论文似乎AFL++也提供了高度配置化的模糊测试框架,但是不够通用 拟解决问题 正交性质的工作难以整合集成; 论文个体贡献难以评估:因为无法判断是基于的工具的优势还是创新算法的优势 难以比较不同工作; 论文贡献提出LibAFL,基于Rust实现的模糊测试框架。LibAFL包含了一系列的库可以用于定制化fuzzer。几个特性: 易于扩展; 按现在的fuzzer组成部分划分 Rust编写 实现了大量的模糊测试算法,特性以及插桩选项 背景关于fuzzing的定义: Therefore, we believe it is more appropriate today to think of fuzzing as a family of testing techniques, which repeatedly provide machine-generated inputs to a target system with the aim of finding inputs that...
honggfuzz学习笔记
Honggfuzz特性 多进程-多线程; pesistent fuzzing mode:fuzz api时,在同一进程中输入新的数据。可以显著提升模糊测试效率 crash track记录完整准确 使用底层(eg:ptrace)接口监视进程状态。可以检测到被劫持、忽视的信号 支持多种基于硬件指令级以及软件层的覆盖率测量方式;同时支持qemu mode的黑盒测试。 persistent fuzzing mode:长期存活的进程重复调用fuzz接口 lets you fuzz your target persistently between two addresses - without forking for every fuzzing attempt. TODO:使用 参考链接 honggfuzz
鸣潮Mod安装
心血来潮. 使用工具: WWMI WWMI安装release版本msi,安装后点击鸣潮添加到左上角,然后Install即可 Mod Installation Extract mod’s archive Put extracted folder into the Mods folder Mod Hot LoadTo properly load newly installed mod without restarting the game: Install mod Hide modded character from screen (switch to another) Press [F10] to reload WWMI Mod User Hotkeys [F12]: Toggle User Guide [F6]: Toggle WWMI dependant mods [F10]: Reload WWMI and Save Mod Settings [Alt]+[F12]: Toggle 0.6.X Compatibility...
Kernel PWN保护机制总结
QEMU上可以开的保护及各种绕过方法KASLR (CONFIG_RANDOMIZE_BASE)KASLR(Kernel Address Space Layout Randomize, 内核地址空间布局随机化),开启后,允许kernel image加载到VMALLOC区域的任何位置。在未开启KASLR保护机制时,内核代码段的基址为 0xffffffff81000000,direct mapping area 的基址为 0xffff888000000000。 查看方法 内核启动参数是否包含kaslr参数; 读/proc/kallsyms,查看是否对应未开启KASLR的基址,或者多开几次看地址是否相同。 绕过1通过利用漏洞实现任意地址读,泄漏page_offset_base;https://arttnba3.cn/2021/03/03/PWN-0X00-LINUX-KERNEL-PWN-PART-I/#0x07-Kernel-Heap-Arbitrary-Address-Allocation 常见结构体泄漏:msg_msg 在 0x9d000...
强网杯2021线上赛 notebook
抄袭的 a3 大佬的博客,各位师傅轻喷 使用内核模块实现了一个菜单题: 保护机制从qemu启动脚本可以看到开启了smep,smap,kaslr保护机制 1234#!/bin/shstty intr ^]exec timeout 300 qemu-system-x86_64 -m 64M -kernel bzImage -initrd rootfs.cpio -append "loglevel=3 console=ttyS0 oops=panic panic=1 kaslr" -nographic -net user -net nic -device e1000 -smp cores=2,threads=2 -cpu kvm64,+smep,+smap -monitor /dev/null 2>/dev/null -s 查看内核init脚本,禁止查看/proc/kallsyms和dmesg 12echo 1 > /proc/sys/kernel/kptr_restrictecho 1 >...
RWCTF2022 kernel_for_player
内核堆题基本思路:通过修改free_list的next指针来完成内核空间任意地址分配 保护机制查看开启的保护机制,通过qemu启动脚本可知开启kaslr,smep,smap,查看/sys/devices/system/cpu/vulnerabilities/*内容可知开启PTI保护,或者通过/proc/cpuinfo查看: 123456/home $ grep flags /proc/cpuinfo -m 1 | grep ptiflags : fpu de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx lm constant_tsc nopl xtopology cpuid pni cx16 hypervisop/home $ grep flags /proc/cpuinfo -m 1 | grep smepflags : fpu de pse tsc msr pae mce cx8...
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)