Linux 为什么';dirtyCOW PoC不能在我的虚拟机上工作吗?

Linux 为什么';dirtyCOW PoC不能在我的虚拟机上工作吗?,linux,linux-kernel,exploit,Linux,Linux Kernel,Exploit,我想写一篇关于DirtyCOW漏洞的文章。我不明白为什么我的系统不工作 我有一个来自VirtualBox的虚拟机,它运行的是Ubuntu 9.10(我从中下载的),内核版本为2.6.31-14-generic。(根据维基百科的说法,这仍然是脆弱的) 我已经编译了可以找到的PoC,并运行了以下程序: cow@dirtycow:~/Desktop$ uname -r 2.6.31-14-generic cow@dirtycow:~/Desktop$ sudo su [sudo] password f

我想写一篇关于DirtyCOW漏洞的文章。我不明白为什么我的系统不工作

我有一个来自VirtualBox的虚拟机,它运行的是Ubuntu 9.10(我从中下载的),内核版本为2.6.31-14-generic。(根据维基百科的说法,这仍然是脆弱的)

我已经编译了可以找到的PoC,并运行了以下程序:

cow@dirtycow:~/Desktop$ uname -r
2.6.31-14-generic
cow@dirtycow:~/Desktop$ sudo su
[sudo] password for cow:
root@dirtycow:/home/cow/Desktop# echo "hey" > weird_file
root@dirtycow:/home/cow/Desktop# exit
exit
cow@dirtycow:~/Desktop$ ./dirtyc0w weird_file AA
mmap b77f2000

procselfmem -100000000

madvise 0

cow@dirtycow:~/Desktop$ cat weird_file
hey
我正在使用Oracle的VirtualBox运行Ubuntu 9.10虚拟机,虚拟机的统计数据如下:

  • 64位
  • 带55GB硬盘的3GB RAM内存
  • 3个CPU(100%执行上限)

Output
procselfmem-100000000
最有可能意味着每次
写入
调用都失败(返回
-1
)。这段代码进行了最少的检查,所以我们只能猜测它为什么会这样。甚至对文件
/proc/self/mem
的调用也可能失败。您可以尝试调试代码(通过
gdb
运行,或插入
printf
调用)。在堆栈溢出时,我们希望asker执行一些调试。我检查了,open调用已成功,其他参数也正常。那么,哪个确切的文件操作首先失败?它在写入时失败,并表示参数无效,虽然打开成功,并且其他参数包含它们应该输出的内容,但很可能意味着每次
写入
调用都失败(返回
-1
)。这段代码进行了最少的检查,所以我们只能猜测它为什么会这样。甚至对文件
/proc/self/mem
的调用也可能失败。您可以尝试调试代码(通过
gdb
运行,或插入
printf
调用)。在堆栈溢出时,我们希望asker执行一些调试。我检查过,open调用成功,其他参数也正常。那么,哪个确切的文件操作首先失败?它在写入时失败,并显示无效参数,尽管open成功,其他参数包含它们应该包含的内容