zoukankan      html  css  js  c++  java
  • hitcon_2018_children_tcache

    思路

    记录一下思路,具体分析可以参考BUUCTF-PWN刷题记录-5(Tcache)
    题目保护全开,所以只能靠写 hook 了。题目的漏洞是 strcpy 造成的 null by one 。
    具体步骤:

    1. leak libc

      • 分配三个 chunk (0,1,2),通过 null by one 覆盖 chunk2 的 inuse 位。
      • 利用 chunk1 对 chunk2 的 prve size 位空间复用,将prev size 改为 chunk0 + chunk1 的大小。
      • free chunk2 就能得到一个大的空闲 chunk(chunk0 + chunk1 + chunk2)。
      • 再次分配 chunk0 大小的 chunk,chunk2 切割 chunk0 大小后剩下的部分进入 unsorted bin ,此时便在 chunk1 的 fd 处踩出 libc 地址。
      • 打印 chunk1 的内容获得 libc 地址,以此计算 __malloc_hook 与 one_gadget 的地址。
    2. get shell

      • 通过前面的布局,记录 chunk 地址的数组中,chunk_addr[0] 与 chunk_addr[2] 都指向同一个 chunk ,因为 tcache 没有检查,所以我们可以直接 double free 。
      • malloc 一次将 fd 指针改为 __malloc_hook ,这里也是因为 tcache 没有做任何检查,所以可以直接再次 malloc 即可分配到 __malloc_hook 处,然后覆盖 __malloc_hook 为 one_gadget 。
      • 程序中再次调用 __malloc_hook 即可 get_shell 。
  • 相关阅读:
    powershell:clear-item
    windows-杂笔
    powershell:Clear-EventLog
    powershell:Get-ChildItem
    powershell 杂笔
    power-shell:clear-content
    powershell:checkpoint-computer
    vim-缩进设置
    powershell:move-item
    powershell:add-content
  • 原文地址:https://www.cnblogs.com/luoleqi/p/13514092.html
Copyright © 2011-2022 走看看