How2Kernel-Lab4

How2Kernel-Lab4

Find your first kernel primitives

没啥可分析的。。

user.cexecute_kernel_function()函数就是调用的内核的call_func()函数。

call_func()函数:

static long 
call_func(struct call_arg * call_arg_ptr)
{
  unsigned long (* call )(unsigned long);
  long ret;
  struct call_arg call_args;
  if(copy_from_user(&call_args,call_arg_ptr,
                    sizeof(struct call_arg)))
    {
                return -EFAULT;
    }
  printk("Calling function @ 0x%016lx \nWith argument  0x%016lx\n"
         ,call_args.fn_addr
         ,call_args.args);
  call =(void *) call_args.fn_addr;
  ret = call(call_args.args);
  return ret;
}

这个函数就是提供一个函数地址和函数参数,然后调用这个函数执行。

所以就是执行commit_creds(prepare_kernel_cred(0))

脚本贴在这里了。

由于lab5 和 lab6没啥可写的,exp和poc作者都提供了,那就。。完结撒花🎉

posted @ 2020-12-03 17:20  Yisumi  阅读(86)  评论(0编辑  收藏  举报