摘要:
漏洞分析 在内核态实现了一个队列管理程序,主要部分还是堆的增删改查。 队列结构: // 管理结构 queue typedef struct{ uint16_t data_size; // 队列每一项 entry 的大小 uint64_t queue_size; // 队列整体的大小 uint32_t 阅读全文
摘要:
stack_overflow 漏洞代码: #include <linux/init.h> #include <linux/module.h> #include <linux/kernel.h> #include <linux/proc_fs.h> int bug2_write(struct file 阅读全文
摘要:
下载 go 环境 wget https://dl.google.com/go/go1.17.6.linux-amd64.tar.gz tar -xf go1.17.6.linux-amd64.tar.gz # 后面这两条命令建议设置到~/.bashrc文件中置 export GOROOT=`pwd` 阅读全文
摘要:
整体架构 syz-manager 通过 ssh 调用 syz-fuzzer,syz-fuzzer 和 syz-manager 之间通过 RPC 进行通信,syz-fuzzer 将输入传给 syz-executor,syz-executor 执行 syscall(可看作 fuzz 过程中对内核的输入) 阅读全文
摘要:
经典 kernel pwn 入门题 环境配置 题目地址:https://github.com/ctf-wiki/ctf-challenges/blob/master/pwn/kernel/CISCN2017-babydriver/babydriver.tar 解压后启动 boot.sh 失败,需要 阅读全文
摘要:
环境准备 下载 glibc2.23 源码 sudo apt-get install glibc-source sudo apt-get install libc6-dbg sudo tar xf /usr/src/glibc/glibc-2.23.tar.xz malloc 堆结构: struct 阅读全文
摘要:
项目地址:https://github.com/jakespringer/angr_ctf 00_angr_find 拖 ida,大致流程就是字符串加密后等于给定值,可以直接爆破。 Angr 的基本使用步骤: 1.创建 project 2.设置 state 3.新建符号量:BVS (bitvecto 阅读全文
摘要:
系统调用过程 当应用程序经过库函数向内核发出一个中断调用 int 0x80 时,就开始执行一个系统调用,eax 存放调用号,ebx,,ecx,edx依次存放携带的参数(最多 3 个)。根据传入参数的不同,有对应的 __syscall0,__syscall3 等宏定义 __syscall0 位于 in 阅读全文
摘要:
调度程序 在 kernel/sched.c 中的 schedule 函数中实现。 首先扫描任务数组,在所有就绪态(TASK_RUNNING)的任务中找出时间滴答计数 counter 中找出值最大的那个任务(优先执行)。 如果此时所有就绪态进程的时间片都用完了,系统会根据没个进程的优先级(priori 阅读全文
摘要:
执行脚本 在 level-ip 中,我们是重新封装了执行应用层命令的底层 socket 库,其中执行 curl 的命令为 ./level-ip curl www.baidu.com 80 看一下这个 level-ip 脚本 #!/bin/sh set -eu prog="$1" shift LD_P 阅读全文