随笔分类 -  kernel

摘要:利用msg_msg实现任意地址读写 msgsnd和msgrcv的源码分析 内核通过msgsnd和msgrcv来进行IPC通信。内核消息分为两个部分,一个是消息头msg_msg(0x30),以及后面跟着的消息数据。整个内核消息的长度是从kmalloc-64到kmalloc-4096`。 /* one 阅读全文
posted @ 2022-09-26 15:56 狒猩橙 阅读(1216) 评论(1) 推荐(1)
摘要:利用ldt_struct 与 modify_ldt 系统调用实现任意地址读写 ldt_struct与modify_ldt系统调用的介绍 ldt_struct ldt是局部段描述符表,里面存放的是进程的段描述符,段寄存器里存放的段选择子便是段描述符表中段描述符的索引。和ldt有关的结构体是ldt_st 阅读全文
posted @ 2022-09-14 18:29 狒猩橙 阅读(739) 评论(1) 推荐(2)
摘要:利用userfaultfd + setxattr堆占位 很久之前便看到过这个技术的名字,但是由于自己的摆烂,一直没有管。今天终于找到时间好好看一下这个技术的利用方式。利用userfaultfd + setxattr算是内核里一种比较通用的利用技术,在实际场景中通常和堆喷射技术结合起来。但是在某些CT 阅读全文
posted @ 2022-09-05 12:53 狒猩橙 阅读(773) 评论(1) 推荐(1)
摘要:条件竞争 && pipe_buffer + 堆喷射 条件竞争往往发生在开了多线程的程序中,常因为没有对全局函数,数据加锁,导致多线程可以同时对其访问篡改,而引发的漏洞。 例题:WCTF2018-klist 我们通过这一道题来学习一下条件竞争以及pipe_buffer + 堆喷射的使用。 这个程序维护 阅读全文
posted @ 2022-08-11 11:17 狒猩橙 阅读(413) 评论(1) 推荐(1)
摘要:堆喷射(heap spraying) 用2021QWB-notebook这一题来复习了Userfault的用法,以及初识内核堆喷射。同时也学习了work_for_cpu_fn这个函数的利用方法。它可以很稳定地绕过KPTI,执行commit_creds(prepare_kernel_cred(0))。 阅读全文
posted @ 2022-07-22 10:20 狒猩橙 阅读(421) 评论(0) 推荐(0)
摘要:条件竞争 && userfaultfd 概述 userfault是linux下的一种缺页处理的系统调用,用户可以通过自定义的函数来处理这个缺页错误。这里说的缺页就是指,程序访问页面时,该页面还未被装入RAM中,比如mmap出来的堆块。通过这个机制我们可以控制程序执行的先后顺序,从而大幅度提高我们条件 阅读全文
posted @ 2022-07-11 11:11 狒猩橙 阅读(326) 评论(3) 推荐(1)
摘要:double fetch 概述 double fetch属于条件竞争漏洞,一般是内核态与用户态之间的数据访问竞争。由于多线程的原因,使得内核里多次访问到的用户的数据不一致而发生的漏洞。比如我们传一个指针给内核,内核首先有函数对这个指针进行合法性的检查,检查完毕后再进一步执行下一个函数。但是如果有恶意 阅读全文
posted @ 2022-05-28 17:14 狒猩橙 阅读(146) 评论(2) 推荐(1)
摘要:kernel 劫持seq_operations && 利用pt_regs 劫持seq_operations进行栈迁移 seq_operations是一个大小为0x20的结构体,在打开/proc/self/stat会申请出来。里面定义了四个函数指针,通过他们可以泄露出内核基地址。 struct seq 阅读全文
posted @ 2022-05-15 22:12 狒猩橙 阅读(666) 评论(2) 推荐(2)
摘要:#kernel heap bypass smep,smap && 劫持modprobe_path ###exp1 smep:smep即用户数据不可执行,当 CPU 处于 ring0 模式时,执行用户空间的代码会触发页错误,系统根据CR4寄存器的第20位判断内核是否开启smep,为1时开启,为0时关闭 阅读全文
posted @ 2022-05-14 23:08 狒猩橙 阅读(336) 评论(2) 推荐(1)
摘要:#kernel UAF && 劫持tty_struct ####ciscn2017_babydriver exp1 fork进程时会申请堆来存放cred。cred结构大小为0xA8。修改cred里的uid,gid为0,即可get root #include <string.h> #include < 阅读全文
posted @ 2022-05-03 21:34 狒猩橙 阅读(249) 评论(1) 推荐(1)
摘要:#kernel ROP 借助qwb-2018 core这道题目来熟悉一下,kernel rop及ret2usr 首先看一下启动脚本 发现没有开什么保护,只开了一个kaslr,为了方便调试我们在这里把它改成nokaslr关闭即可。 再来看一下init文件 看一下这个里面的几行命令是什么意思 1、mou 阅读全文
posted @ 2022-05-02 14:01 狒猩橙 阅读(148) 评论(1) 推荐(1)