linux3.13.0内核溢出漏洞exp,Linux Kernel Pwn 学习笔记(栈溢出)

0x01 背景

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

0x02 内核基本知识

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对应的地址就是基址

970c4a27f2e889c385455d247559c7df.png

core_base:驱动加载基地址

查看基地址方式

cat /proc/modules

cat /proc/devices

cat /proc/kallsyms

lsmod

dmesg

25696ed79f7ff8a9824c8e8f5e13b02f.png

0x03 分析代码

题目:2018 强网杯CTF pwncore

保护机制

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

d49558bc1469d8a4b32e008d2417c23e.png

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

5fa0ae842beb2e8514c62adc8d7cf9bd.png

程序逻辑

ioctl

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值