首页
社区
课程
招聘
[原创]Linux Kernel Pwn 学习笔记(栈溢出)
发表于: 2020-8-22 15:00 14024

[原创]Linux Kernel Pwn 学习笔记(栈溢出)

2020-8-22 15:00
14024

栈溢出是最基本的一个漏洞,学习 pwn 从栈溢出开始学习是比较简单的入门方式。之前也研究过 linux 内核,但因为种种原因不得不放弃。现在跟着安卓版主学习了几天linux内核漏洞,收获了不少知识,开始自己梳理和分享自己的笔记,特此感谢版主老师的教导

Canary: 是防止栈溢出的保护,一般在 ebp-0x8 的位置,学习 linux pwn 的基本知识,不细讲
KASLR:地址随机化,类似 ASLR
SMAP:内核保护机制,内核态不可使用用户态的数据
SMEP:内核保护机制,内核态不可执行用户的代码
commit_creds(prepare_kernel_cred(0)) :获得 root权限功能函数
file_opertion : Linux使用file_operations结构访问驱动程序的函数,这个结构的每一个成员的名字都对应着一个调用ioctl系统调用来控制设备

vmlinux_base: 内核加载基址,有了这个可以绕过 kaslr 实现内核的其他函数

获取方式:head /proc/kallsyms 1,startup对应的地址就是基址

core_base:驱动加载基地址

查看基地址方式
cat /proc/modules
cat /proc/devices
cat /proc/kallsyms
lsmod
dmesg

题目:2018 强网杯CTF pwncore

从checksec我们可以知道开启canary和nx enable

在start.sh可以看到内核没有开启smep和smap,但开启kaslr

首先是ioctl,通过ioctl可以实现core_read和修改off和core_core_func三个功能,我们可以控制ioctl的三个参数,就是arg1(a1),arg2,arg3

通过ioctl我们可以知道core_read的两个参数对应着arg3和arg2,这里有个泄漏栈地址的漏洞copy_to_user,该函数功能是从v6+off开始的位置读取64个字符到arg3中,通过这个函数可以将栈上v6+off到v6+off+0x64的栈空间传递到我们的buff,即可泄漏canary和vmlinux_base以及core_base,方便我们构造ROP chain。

core_write函数这里copy_from_user可以让我们写name,限制字符数是0x800

这里注意到qmemcpy,v2是rbp-50h的地方,可是name是我们控制的变量,并且可以写0x800个字符,那么我们可以这里进行栈溢出劫持控制流

编写EXP的时候我们需要注意,进入内核时需要保存当前进程的环境,同时在
init_module 里面有个core_proc = proc_create("core", 438LL, 0LL, &core_fops);
core_fops是file_operation的结构体,它是linux调用的时候指定的函数,
驱动加载的时候调用了init_module,导致我们写的一些函数都指向了驱动中的函数。
这里注册了core_write、core_ioctl、core_release,通过这个结构体我们调用write就是调用core_write,ioctl就是调用core_ioctl.知道这些才能正确地编写exp,exp对应函数调用如下:


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2020-8-23 10:47 被Vinadiak编辑 ,原因:
收藏
免费 10
支持
分享
最新回复 (6)
雪    币: 14666
活跃值: (17764)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
2
mark,楼主把题目发下
2020-8-23 09:33
0
雪    币: 270
活跃值: (1662)
能力值: ( LV5,RANK:75 )
在线值:
发帖
回帖
粉丝
3
pureGavin mark,楼主把题目发下
在最下面的题目下载地址放了题目了
2020-8-23 10:47
0
雪    币: 14666
活跃值: (17764)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
4
Vinadiak 在最下面的题目下载地址放了题目了
github。。。下载有点儿慢,不过总比没有好
2020-8-23 11:01
0
雪    币: 388
活跃值: (892)
能力值: ( LV3,RANK:32 )
在线值:
发帖
回帖
粉丝
5
楼主看的安卓版主的文章链接还有吗
2021-2-23 23:56
0
雪    币: 4168
活跃值: (15932)
能力值: ( LV9,RANK:710 )
在线值:
发帖
回帖
粉丝
6
支持!
2021-2-24 12:19
0
雪    币: 3561
活跃值: (541)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
good
2021-2-24 13:49
0
游客
登录 | 注册 方可回帖
返回
//