美文网首页
OShomework1

OShomework1

作者: ZoltanJin | 来源:发表于2018-03-07 10:04 被阅读0次
    • 什么是 do_brk() ?
      do_brk() 是 mmap() 的简化版本,可以控制进程的 heap 增长或缩短。
      do_brk() 只用于处理未初始化数据的匿名 mapping 调用,故起初开发者们在这个函数中几乎没有做任何的边界检查。
      缺乏边界检查是一个隐藏的 bug 。

    • 如何利用 do_brk() 的 bug ?

      1. 改变进程栈的 layout,使我们后来能通过 do_brk() 的 bug 来向上扩展堆并覆盖 kernel 空间。
      2. 通过 LDT_mod,verr 和一些 signal 的技术加入新的 kpage,找到特定的 kpage,借此找到并访问到 LDT entry。
      3. 通过 do_brk() 溢出,改写 kernel page。关闭 s-bit 并改写 LDT entry 从而可以以 ring0 的身份调用任何函数.
      4. 扫描 task_struct 改写自己的 uid 或 gid,获取 root 权限。

    相关文章

      网友评论

          本文标题:OShomework1

          本文链接:https://www.haomeiwen.com/subject/yvadfftx.html