CVE-2025-32463漏洞复现
尝试复现并分析调试今年的一个 sudo 本地提权漏洞。该漏洞描述如下: Sudo before 1.9.17p1 allows local users to obtain root access because /etc/nsswitch.conf from a user-controlled directory is used with the –chroot option. 环境搭建建议环境 glibc 版本 > 2.35,否则无法复现。git clone sudo 的源码: 123git clone https://github.com/sudo-project/sudo.gitcd sudogit checkout v1.9.16p2 编译: 123./configuremake -j$(nproc)sudo make install make install 会安装到 /usr/local/bin ,先将原来的 /usr/bin/sudo...
LibAFL-for-socket
学习一下如何使用 LibAFL 来实现对 binary-only 的 socket 进行 fuzz。LibAFL 本身提供了 binary-only 模式,即 LibAFL-Qemu。然后针对 binary-only 的 socket 目标 AFL++ 也提供了常见的方法。这里我们采用 LibAFL-Qemu + socketfuzz hook library 的方法。 baby_fuzzer of LibAFL-QEMU首先阅读 LibAFL 提供的 LibAFL-QEMU 的几个实例,由于 frida_mode 目前相较于 qemu_mode 功能仍有所欠缺,我们仅考虑 qemu 模式。官方给的几个例子中 qemu_launcher 是比较完整可以直接拿来用的。要跑起来直接 just run 即可,其脚本会自动下载 libpng 的库并编译 harness 来进行 fuzz。这里我是自己先写了一个很简单的 harness.cc 来做测试,基本逻辑和 LibAFL 的 babyfuzzer...
LibAFL 工具使用
学习 libAFL 工具的一些基本使用方法。 环境 Ubuntu 22.04 clang rust LibAFL 源码首先从 github 下载 LibAFL 源码:1git clone https://github.com/AFLplusplus/LibAFL.git 教程建议安装 mdbook 然后查看 repo 的版本。 12cd ./libAFL/docsmdbook serve 编译运行编译 LibAFL直接使用 cargo 运行以下命令即可(Debug mode 要比 release mode 慢 10 倍以上): 1cargo build --release 编译 fuzzer 示例在 ./fuzzers/<Fuzzer_name> 目录下执行 cargo build --release 命令 CratesLibAFL 包含各种部件,自身也是。因此可以直接在自己的项目 Cargo.toml 中添加 libafl 依赖即可: 12[dependencies]libafl = { version =...
C/C++ Socket编程入门
在学习 LibFuzzer,需要了解一下如何通过 C 或者 C++ 与目标建立连接。 基本概念socket(套接字)用于建立两个或多个节点间的数据通信,分为服务端和客户端。偷一张感觉比较清晰的图放在这里 例程以下是直接扒的示例程序,由C语言实现,暂时看这个以及上面的图就够用了 服务器端代码实现1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253#include <stdio.h>#include <string.h>#include <stdlib.h>#include <unistd.h>#include <arpa/inet.h>#include <sys/socket.h>#include <netinet/in.h>int main(){ // 创建套接字 int serv_sock = socket(AF_INET,...
N1CTF-N1Khash题目复现
有时间复现一下 N1CTF 中的 N1Khash 这个题目,也是 kernel pwn 的延续了。 题目基本信息保护机制给了 Kconfig 文件,可以关注的保护机制如下: 12345678CONFIG_MEMCG=yCONFIG_SLUB=yCONFIG_SLAB_FREELIST_RANDOM=yCONFIG_SLAB_FREELIST_HARDENED=yCONFIG_HARDENED_USERCOPY=yCONFIG_BINFMT_MISC=y# not set CONFIG_CFI_CLANG# CONFIG_STATIC_USERMODEHELPER is not set 因此可以尝试通过修改 modprobe_path 路径来进行提权查看启动脚本如下: 1234567891011qemu-system-x86_64 \ -m 256M \ -cpu qemu64,+smap,+smep \ -kernel bzImage \ -append "console=ttyS0 quiet panic=-1 kaslr...
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()...
CheetSheet
CheetSheet for General Use Environment ROG 幻16air 2025 Arch Linux niri Kernel Upgrade更新后可能需要重新安装(内核模块)的包该情况仅适用于自定义内核,如果你安装了 linux-headers 以及 linux,会在更新时自动编译安装 nvidia-open-dkms vmware-workstation … gdb关闭 SIG33 断点提示:1234handle SIG33 nostop noprint pass# **nostop**:不因为这个信号而中断程序;# **noprint**:不打印任何提示信息;# **pass**:仍然把信号传递给程序(通常是安全的)。 neovim主题:LazyVim语法高亮:Treesitter,:TSInstall语法补全:Lsp-configsudo 权限运行:sudo -E nvim … (保留用户的环境变量)其他:NVIM-CheetSheet Arch...
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...
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...
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()...
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)