pwn工具箱之house of spirit

house of spirit

基本信息

  • 利用种类:堆利用
  • 堆利用种类:释放fake chunk
  • 利用思路:通过构造fake chunk,然后使得fake chunk被free,在下一次malloc时返回fake chunk

利用难点

  1. 需要能够控制被free的内容,才能构造fake chunk
  2. 在free fake chunk的时候,libc会检查next size,也就是从当前位置开始算,加上一个chunk size后的位置是不是正常的堆大小。所以需要通过构造来满足next size的check

详细信息

关于next size的检测:

/* We might not have a lock at this point and concurrent modifications
       of system_mem might have let to a false positive.  Redo the test
       after getting the lock.  */
    if (have_lock
        || ({ assert (locked == 0);
          __libc_lock_lock (av->mutex);
          locked = 1;
          chunksize_nomask (chunk_at_offset (p, size)) <= 2 * SIZE_SZ
            || chunksize (chunk_at_offset (p, size)) >= av->system_mem;
          }))
      {
        errstr = "free(): invalid next size (fast)";
        goto errout;
      }

锁相关的不用太在意,主要是最后几句:

chunksize_nomask(chunk_at_offset (p, size)) <= 2 * SIZE_SZ ||
chunksize (chunk_at_offset (p, size)) >= av->system_mem

也就是说,nextsize的大小,应该是大于等于av->system_mem小于2 × SIZE_SZ的。但是其实不用太担心,一般来说,只要是一个一般大小的,都会符合这个条件,最主要的是,不能为0.

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读