Task 4 从用户空间访问内核内存
这是Meltdown Attack的第四个实验,原实验教程在此:
https://seedsecuritylabs.org/Labs_16.04/System/Meltdown_Attack/
现在我们知道了secret data的地址了,让我们做个实验来看看能否直接访问到这个地址的数据。查看这个地址的代码如下。
AccessKernel.c
#include<stdio.h>
int main()
{
char *kernel_data_addr = (char*)0xf9c6c000; //f9c6c000是从task3获得的地址
char kernel_data = *kernel_data_addr;
printf("I have reached here.\n");
return 0;
}
然后使用gcc -o AccessKernel Accesskernel.c
编译该代码,并./AccessKernel
运行该代码,结果如下。发生了段错误:Segmentation fault,并没有打印出我们的I have reached here.
。
这是因为我们的程序是用户程序,当其访问内核区的地址,也就是这个程序不应该访问的地址时,就产生了段错误,来避免程序进行恶意操作。