朋友在执行的时候说有的会出现提权不成功,内核crash掉的现象。因为cred结构体的偏移量可能因为内核版本不同、内核编译选项不同而出现差异,作者给的exp偏移量是写死的,所以exp里面对应的偏移地址也要改一下。以下方法可以算出不同内核版本默认编译选项下的cred偏移地址:

1.Makefile

obj-m += getCredOffset.o

all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

2.getCredOffset.c

#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/kthread.h>
#include <linux/errno.h>
#include <linux/types.h>
int init_module() {
printk("[!]current cred offset:%x\n",(unsigned long)&(current->cred)-(unsigned long)current);
return 0;
}
void cleanup_module()
{
printk("module cleanup\n");
}

把上面俩文件扔到一目录里,make一下,生成getCredOffset.ko,执行insmod getCredOffset.ko,然后新开一个命令行执行dmesg | grep "cred offset",OK了,把得到的offset替换到exp里面。

前面说了,这个适合默认的内核编译选项,这样才能在本地环境中的root权限下insmod,至于其他情况,只能通过其他方法来确定cred偏移量了。

这个漏洞是个任意地址读写漏洞,所以也可以在确定task_struct地址之后,以当前用户的uid为特征去搜索内存,毕竟cred离task_struct不远。

最新文章

  1. CSS实现图片缩放特效
  2. 深入理解JS的闭包
  3. Spring-程序中获取注册bean的方式
  4. bzoj1150: [CTSC2007]数据备份Backup--贪心+优先队列维护堆
  5. sqlserver2008使用设置sa用户登录步骤
  6. HDU1150Machine Schedule(二分图最大匹配的DFS解法)
  7. [2015编程之美] 资格赛C
  8. 【原创】_INTSIZEOF 内存按照int对齐
  9. Swift - 给表格TableView添加页眉和页脚
  10. DrawerLayout,ToolBar 和 TabHost 的使用
  11. 如何使用ArcGIS发布LiDAR 点云
  12. nxlog4go 的配置驱动
  13. C++为什么要设计友元函数和友元类
  14. flask基础二
  15. docker学习-lnmp+redis之搭建lnp容器服务
  16. 【Linux基础】awk命令
  17. mvn项目压缩打包
  18. Kotlin入门(20)几种常见的对话框
  19. [Web安全] XXE漏洞攻防学习(中)
  20. 回想sql语句中的各种连接

热门文章

  1. C语言:猴子吃桃问题
  2. C语言:size_t类型
  3. PYTHON 转化函数
  4. File类与常用IO流第七章——Properties集合
  5. 【有奖互动】HMS Core. Sparkle游戏应用创新沙龙,诚邀您参与
  6. 给你的Mac 整个好用的命令行iTerm2 + zsh + oh-my-zsh + powerlevel10k
  7. PAT乙级:1076 Wifi密码 (15分)
  8. 第二十九篇 -- PY程序返回值问题
  9. Python基础之读写xml总结
  10. python 之爬虫基本流程