0
点赞
收藏
分享

微信扫一扫

linux kernal pwn 0ctf2018-zerofs

八卦城的酒 2022-04-29 阅读 59
网络安全

启动脚本

#!/bin/sh

stty intr ^]

qemu-system-x86_64 -enable-kvm -cpu kvm64,+smep,+smap -m 64M -kernel ./bzImage -initrd ./rootfs.cpio -append "root=/dev/ram rw console=ttyS0 oops=panic panic=1 quiet kaslr" -monitor /dev/null -nographic 2>/dev/null

init

#!/bin/sh

mknod -m 0666 /dev/null c 1 3
mknod -m 0660 /dev/ttyS0 c 4 64

mount -t proc proc /proc
mount -t sysfs sysfs /sys

cat /root/signature

echo 2 > /proc/sys/kernel/kptr_restrict
echo 1 > /proc/sys/kernel/dmesg_restrict

insmod /zerofs.ko

setsid cttyhack setuidgid 1000 sh

umount /proc
umount /sys

poweroff -f

主要就是凸显拒绝/proc/kallsymble泄露地址。
然后没有设置ptmx文件的权限
换言之就是能劫持tty结构体 能覆盖ptmx结构体。

在这里插入图片描述
看得出来逆向会非常的辛苦
在这里插入图片描述
看看函数我们应该能感受的出来
这显然长的很像一个文件系统。

我们要额外学习一些虚拟文件系统的知识。

我们知道一个文件系统的镜像,需要mount到目录上,才能使用。而mount是如何来识别这些文件系统的?这就靠驱动,register_filesystem将用户定义的文件系统注册,链接到系统维护的一个文件系统表上,mount遍历这张表,丛中取出对应的文件系统,并使用驱动里提供的一系列函数进行文件操作。

函数太多我们直接定位漏洞函数吧。
在这里插入图片描述
get_inode函数中是从文件系统镜像里去读取一个文件的inode,里面会记录文件大小等属性。
如果我们对文件里的size进行伪造,那么就可以造成溢出。

然后具体利用就跟klist那个题目一样。
利用溢出搜索到cred结构体
然后修改
提权。

exp写起来感觉好麻烦的样子
咕咕咕

大佬博客贴过来
可以去里面看看
ha1vk

举报

相关推荐

0 条评论