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...
鸣潮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...
template for obsidian
tmux 2.3 及以上 [ 一、会话(Sessions)1.1 shell 下操控会话 操作 Shell 命令 新建会话 tmux [new -s 会话名 n 窗口名] 删除会话 tmux kill-session -t 会话名 恢复会话 tmux at [-t 会话名] 列出所有会话 tmux ls 关闭所有会话 tmux kill-server 1.2 tmux 中控制会话、切换会话 操作 Tmux 命令 会话重命名 :rename-session [新会话名] 新建会话 :new<回车> 离开(detach)当前会话 Ctrl+b d 列出所有会话 Ctrl+b s 重命名当前会话 Ctrl+b $ 前往上一个会话 Ctrl+b ( 前往下一个会话 Ctrl+b ) 预览会话及其从属的窗口 Ctrl+b w 前置命令(PREFIX CMD):Ctrl+b,在 Tmux 中,按下 Tmux 前置命令,然后输入相应的指令完成操作,有点类似于 vim 中使用 esc...
源码覆盖率统计
LibFuzzer使用的覆盖率统计工具为Source-based Code Coverage。另外两个clang实现的覆盖率统计实现: SanitizerCoverage: 低开销的工具。可以提供边级别的覆盖率统计; gcov: gcc兼容的覆盖率统计实现,基于DebugInfo。-ftest-coverage和--coverage workflow 编译附带覆盖率信息 运行插桩程序 创建覆盖率报告后面以下面的代码为例:ShowLineNumbers1234567891011% cat <<EOF > foo.cc#define BAR(x) ((x) || (x))template <typename T> void foo(T x) { for (unsigned I = 0; I < 10; ++I) { BAR(I); }}int main() { foo<int>(0); foo<float>(0); return...
Fuzz学习
正式开始Fuzz的学习之路,大概总结了一下,大概学习路线如下: 源码Fuzz gcc&clang等编译工具总结 ASAN, UBSAN, LSan,QASAN AFL++ HonggFuzz LibFuzzer学习笔记 LibAFL学习笔记 源码覆盖率统计 二进制Fuzz afl-qemu FirmAFL GreenHouse LibAFL-qemu TFuzz(加了符号执行,去除sanity check) 黑盒Fuzz Labrador EAGLEYE(接口识别) V8Fuzz Fuzzilli 内核Fuzz Syzkaller :sequence of syscalls TriforceLinuxSyscallFuzzer Unicorefuzz KAFL EQUAFL Pandawan Hypervisor Nyx Android Fuzz竞态条件 ...
LibFuzzer学习笔记
环境配置 Ubuntu 22.04安装源码:showLineNumbers123456789# Install git and get this tutorialsudo apt-get --yes install gitgit clone https://github.com/google/fuzzing.git fuzzing# Get fuzzer-test-suitegit clone https://github.com/google/fuzzer-test-suite.git FTS./fuzzing/tutorial/libFuzzer/install-deps.sh # Get deps./fuzzing/tutorial/libFuzzer/install-clang.sh # Get fresh clang binaries 验证:12clang++ -g -fsanitize=address,fuzzer fuzzing/tutorial/libFuzzer/fuzz_me.cc./a.out 2>&1 | grep...
GN以及Ninja基本语法
GN用于编译文件作配置定义 语法GN使用简单动态类型语言,涉及的变量类型为: Boolean (true, false) 64-bit signed integers Strings Lists Scopes (sort of like a dictionary, only for built-in stuff)完整的语法参考gn help grammar 字符串字符串有双引号包裹,使用反斜杠\转义,支持的反斜杠转义包括\", \$,\\。其他使用都不会进行转义$可以用于变量替换,可以用{}包裹。 123a = "mypath"b = "$a/foo.cc" # b -> "mypath/foo.cc"c = "foo${a}bar.cc" # c -> "foomypathbar.cc" 可以使用$0xFF语法表示8bit的数值。 列表列表支持append操作: 1234a = ["first"]a...
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)