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.

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页