kernel pwn ——(1)

本文介绍了kernel pwn的基础知识,包括如何解压获取src文件夹,分析启动脚本和QEMU命令。重点讨论了驱动mod.ko中的kpwn_ioctl函数,特别是0x133D case中的UAF漏洞。提到了几种内核态的利用手法,如修改cred结构体和利用tty设备,并讲解了如何在开启KASLR的情况下调试内核,寻找模块基址。最后提到了静态编译exp的方法。
摘要由CSDN通过智能技术生成

tar 文件解压
文件 to_pwner.tar.xz
解压命令: xz -d to_pwner.tar.xz
再次解压:tar -xvf to_pwner.tar 之后获得 src文件夹
在这里插入图片描述
获得src文件夹 ,里面包含了启动脚本startvm.sh 和问题驱动mod.ko, bzImage 是经过压缩的原始内核文件。
运行脚本尝试获得一些信息:
在这里插入图片描述
加载进来,是在别的目录里,驱动程序应该是一开始就已经加载了的,大部分kernel pwn都是提权,这题也是。
接下来分析 启动脚本:
在这里插入图片描述
打开 qemu_cmd继续分析:
在这里插入图片描述
启动脚本,逐条解释含义:
9先指明框架 -m 分配内存
10指明内核文件
11开启了KASLR ,内核地址空间布局随机化
12文件系统
13 指定guest cpu资源,core是我们平时说的“核“,每个物理CPU可以双核,四核等。thread是每个core的硬件线程数,即超线程
14smep 保护和smap保护:
SMAP(Supervisor Mode Access Prevention,管理模式访问保护)禁止内核访问用户空间的数据
SMEP(Supervisor Mode Execution Prevention,管理模式执行保护)禁止内核执行用户空间的代码。
在内核态中,SMEP类似于NX。
接下来进行静态分析:
在这里插入图片描述
粗略的看一下函数表,这个驱动管理的设备名称为kpwn,才三个函数初始化函数,退出函数和操作函数。
系统设备文件夹下也能看见这个设备,
在这里插入图片描述
主要任务分析kpwn_ioctl函数中的漏洞即可。
粗略的扫一遍,可以明显的看见case 0x133d存在uaf。
但是我现在还是茫然的,根本不知道如何触发和利用这个uaf漏洞,接下的工作,分析每一个case的功能,捋清楚程序流程。

case:
0x1336 申请 0xDC0大小的堆块然后指针存放到bss段,栈上也要指针。限制case 0x1336的使用次数为7次
在这里插入图片描述
case 0x1337 主要是赋值操作 v18.staff[1]=v17.staff v18.staff[2] = v17 v4 =0 v4原本是-22
在这里插入图片描述
case 0x1338 和0x13339 着两个姑且看作对v3.staff的赋值 一个是0xdeadbeef 一个是 0x1
在这里插入图片描述
case 0x133A
若v17.staff!= 0xdeadbeef且cnt >v17.staff[2]且合法 copy_from_user(ptr, buf, len) 若ptr不存在则新分配,并完成对v15的赋值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值