fast bin漏洞利用

Author Avatar
Aryb1n 7月 25, 2017

http://www.vuln.cn/6653
http://www.vuln.cn/6654
http://www.cnblogs.com/Ox9A82/p/5865420.html

顺便mark下,明天看完
http://bobao.360.cn/ctf/detail/189.html
http://bobao.360.cn/learning/detail/3694.html

fastbin的检查大概就只有两个

  1. 现在malloc的和栈顶的不能是同一个chunk, 可以用 a -> b -> a, 这样来绕过
  2. 要malloc出来的chunk的size要是符合大小的, 所以一般控制 a -> fd 为 某一可控的 controll_addr - size_t, 这样controll_addr就会被认为是fake_chunksize…在这个可控地址上写一个合适的size, 就OK了
...
size_t victim_idx = fastbin_index (chunksize (victim));  // 我们fake_chunk的size取出来
if (__builtin_expect (victim_idx != idx, 0)) //如果我们fake的size和nb对应的下标不同, 就说明这个fastbin的大小不合适
    malloc_printerr ("malloc(): memory corruption (fast)");
...