HouseFuzz论文笔记
论文简介论文题目:HouseFuzz: Service-Aware Grey-Box Fuzzing for Vulnerability Detection in Linux-Based Firmware论文作者:Haoyu Xiao; Ziqi Wei; Jiarun Dai; Bowen Li; Yuan Zhang; Min Yang机构/高校:Fudan University 该工作提出了一个针对 linux 固件的用户态模拟模糊测试方案 技术路线 分为三个部分: 服务进程定位与模拟 协议字段关键字提取与种子生成 多进程模糊测试框架构建 服务进程定位与模拟作者将服务进程分为了三个类型:网络进程,守护进程,工具进程。网络进程负责提供对外部的端口服务;守护进程开启本地的端口服务,负责给网络进程提供 IPC 通信;工具进程由网络进程 fork 用于单个请求的处理。 网络进程定位首先其根据系统初始化脚本借用 GreenHouse 的 patch-run-loop 思路去运行系统初始化脚本 init,然后在此过程进行插桩检测启动的网络服务,例如 bind()...
D3CTF2022-d3kheap
基本信息readme 里提供了部分编译配置选项,可以看到使用 SLUB 分配器,同时开启 SLAB_FREELIST_RANDOM, SLAB_FREELIST_HARDENED 等保护: 1234567CONFIG_STATIC_USERMODEHELPER=yCONFIG_STATIC_USERMODEHELPER_PATH=""CONFIG_SLUB=yCONFIG_SLAB_FREELIST_RANDOM=yCONFIG_SLAB_FREELIST_HARDENED=yCONFIG_HARDENED_USERCOPY=y 查看启动脚本,照例开启 smep, smap, kpti, kaslr 保护: 12345678910111213#!/bin/shqemu-system-x86_64 \ -m 256M \ -cpu kvm64,+smep,+smap \ -smp cores=2,threads=2 \ -kernel bzImage \ -initrd ./rootfs.cpio \ -nographic \ -monitor...
0CTF2021-kernote
基本信息查看启动脚本, 开启 kaslr, smep, smap, pti 保护: 1234567891011121314#!/bin/shqemu-system-x86_64 \-m 128M \-kernel ./bzImage \-hda ./rootfs.img \-append "console=ttyS0 quiet root=/dev/sda rw init=/init oops=panic panic=1 panic_on_warn=1 kaslr pti=on" \-monitor /dev/null \-smp cores=2,threads=2 \-nographic \-cpu kvm64,+smep,+smap \-no-reboot \-snapshot \-s 题目 readme...
CVE-2024-0582学习
CVE-2024-0582 是发生在 Linux Kernel 的 io_uring 这一个高性能异步 IO API 中的漏洞,得益于对使用 IORING_REGISTER_PBUF_RING 注册的 ring buffer 在 mmap() 映射的情况下存在可以在释放后仍被使用的 UAF 漏洞,攻击者可以通过该漏洞攻击内核并完成内核提权;该漏洞的 CVSS 分数为 7.8,影响版本包括但不限于 6.4~6.6.5,本文我们选用 6.4 的版本内核源码进行分析。 漏洞分析PBUF_RING Internal我们这里主要关注 io_uring_register 函数中 switch 中与 PBUF_RING 相关的部分 注册:IORING_REGISTER_PBUF_RING对于这个漏洞我们主要关注当 opcode == IORING_REGISTER_PBUF_RING 的情况,该 opcode 意味着注册一个环形缓冲区,其最终会调用到 io_register_pbuf_ring()...
RCTF2022 game学习
基本信息使用 vmlinux-to-elf 工具转 bzImage 可以得到内核版本信息 6.0.12查看启动脚本: 12345678910111213#!/bin/bashexport KERNEL=.export IMAGE=.echo "start"qemu-system-x86_64 \-m 128M \-kernel $KERNEL/bzImage \-nographic \-append 'console=ttyS0 loglevel=3 oops=panic panic=1 kaslr' \-initrd $IMAGE/rootfs.cpio \-monitor /dev/null \-smp cores=1,threads=1 \-cpu kvm64,smep,smap 开启了 kaslr, smep, smap 保护,查看 /proc/cpuinfo 可以看到开启 kpti 保护。解包文件系统,查看 init...
io uring学习
基本结构io_uring 结构为两个单向环形队列,分为 Submission Queue (SQ) 和 Completion Queue (CQ) : 内核中使用 io_uring 结构体来保存单个环形队列的 head 和 tail, head 用于出列,tail 用于入列。 1234struct io_uring { u32 head; u32 tail;}; io_uring_sqe 结构体用于表示提交的请求 (Submission Queue Entry)。 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192/* * IO submission data structure (Submission Queue Entry) */struct...
D^3CTF 2023 - d3kcache学习
学习 Page-Level 堆风水,学习a3大佬的文章 : -) 保护机制查看 run.sh 脚本内容,发现开启 smep, smap, kpti, kaslr 。 12345678910111213#!/bin/bashqemu-system-x86_64 \ -m 256M \ -cpu kvm64,+smep,+smap \ -smp cores=2,threads=2 \ -kernel bzImage \ -hda ./rootfs.img \ -nographic \ -monitor /dev/null \ -snapshot \ -append "console=ttyS0 root=/dev/sda rw rdinit=/sbin/init kaslr pti=on quiet oops=panic panic=1" \ -no-reboot \ -s 查看 config...
CorCTF2022 Cache-of-Castaways学习
Cross Cache overflow 和 Page-Level Heap Fengshui的例题。参考a3大佬的博客 : -) 保护机制提供了KCONFIG,并且从启动脚本中可以查看到开启了KPTI, SMEP, SMAP保护。 通过KCONFIG查看常见保护开启情况如下: 1234CONFIG_MEMCG_KMEM=yCONFIG_RANDOMIZE_BASE=y # KASLRCONFIG_SLAB_FREELIST_RANDOM=yCONFIG_SLAB_FREELIST_HARDENED=y 题目分析题目在注册设备时创建了kmem_cache,flag为0xDC0,即SLAB_ACCOUNT | SLAB_PANIC,同时开启了CONFIG_MEMCG_KMEM=y,因此申请的kmem_cache为独立的,通过kmem_cache_alloc申请的flag为GFP_KERNEL | __GFP_ZERO。 1234567891011121314151617__int64 init_module(){ castaway_dev = 255; ...
InCTF Kqueue学习
堆溢出例题,参考a3大佬的博客来学习 : -) 保护机制查看启动脚本,开启了KASLR,关闭了KPTI,可以利用ret2usr进行利用。 123456789101112#!/bin/bashexec qemu-system-x86_64 \ -cpu kvm64 \ -m 512 \ -nographic \ -kernel "bzImage" \ -append "console=ttyS0 panic=-1 pti=off kaslr quiet" \ -monitor /dev/null \ -initrd "./rootfs.cpio" \ -net user \ -net nic 源码分析提供了kqueue.c源码,定义了kqueue设备,ops只定义了ioctl操作。该操作为一个堆菜单,包括增删改查等操作。 用户传入的结构体定义如下: 1234567typedef struct{ uint32_t max_entries; //...
MirChecker工具使用
该工具是一个用于 rust 内存错误检查的工具,主要是静态分析的方法。跟着 workflow 来就行 : -) 12345678910apt install build-essentialapt-get install m4# fix for unable to find library -lLLVM-11-rust-1.51.0-nightlyrustup toolchain uninstall nightly-2020-12-29-x86_64-unknown-linux-gnurustup toolchain install nightly-2020-12-29 --forcerustup component add rustc-dev llvm-tools-previewcargo cleancargo build --verbose# need to specify lib's pathexport...
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)