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 docker 镜像1234sudo touch...
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()...
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...
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; ...
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)