Fastbin attack 总结】的更多相关文章

Fastbin Attack 暂时接触到了两种针对堆分配机制中fastbin的攻击方式,double free和house of spirit Double free 基本原理 与uaf是对free之后的指针直接进行操作不同,double free通过利用fastbin对堆的分配机制,改写在fastbin中的chunk,实现对指定内存的堆块分配. 先正常释放chunk1和chunk2 此时重新释放chunk1(连续两次释放相同的堆块会报错) double free通过在fastbin数组中形成m…
ptmalloc ptmalloc的基本思路是将堆上的内存区域划分为多个chunk,在分配/回收内存时,对chunk进行分割.回收等操作.在32位系统下,chunk头的大小为8 Bytes,且每个chunk的大小也是8 Bytes的整数倍. chunk头包括以下两部分: prev_size: 如果当前chunk的相邻前一chunk未被使用,prev_size为此前一chunk的大小 size: 当前chunk的大小.由于chunk大小是8的整数倍,所以此size的后3 bit被用于存储其他信息.…
Fastbin attack 本文参考了ctf-wiki 和glibc 要了解fastbin attack,我们先要了解fastbin的机制.由于libc2.26后加入了tcache机制,我们这里就只分析glibc 2.23. 下面的代码选自glibc 2.23 (有删除) static void _int_free (mstate av, mchunkptr p, int have_lock) { size = chunksize (p); //获取p的size check_inuse_chu…
fastbin attack学习小结   之前留在本地的一篇笔记,复习一下. 下面以glibc2.23为例,说明fastbin管理动态内存的细节.先看一下释放内存的管理: if ((unsigned long)(size) <= (unsigned long)(get_max_fast ())// 检查chunk大小是否大于max_fast的大小,如果是,则chunk进入Fastbins进行处理#if TRIM_FASTBINS /* If TRIM_FASTBINS set, don't pl…
前言 ​ 对一些有趣的堆相关的漏洞的利用做一个记录,如有差错,请见谅. ​ 文中未做说明 均是指 glibc 2.23 ​ 相关引用已在文中进行了标注,如有遗漏,请提醒. 简单源码分析 ​ 本节只是简单跟读了一下 malloc 和 free 的源码, 说的比较简单,很多细节还是要自己拿一份源代码来读. 堆中的一些数据结构 堆管理结构 struct malloc_state { mutex_t mutex; /* Serialize access. */ int flags; /* Flags (…
前言 off by null 是一个比较有意思的技术 下面通过 hctf2018 的 heapstrom_zero 实战一波. 相关文件(exp, 题目)位于 https://gitee.com/hac425/blog_data/blob/master/off_by_null/ 注:为了调试的方便,修改了一些代码. 原始题目链接 https://github.com/veritas501/hctf2018 程序分析 直接拿源码分析,程序是一个比较简单的菜单程序 int main(void){ i…
概述 这次的胖哈博杯我出了Pwn400.Pwn500两道题目,这里讲一下出题和解题的思路.我个人感觉前两年的Pwn题更多的是考察单一的利用技巧,比我这有个洞怎么利用它拿到权限.但是我研究了一些最近的题目发现,Pwn题目逐步从考察利用技巧变为考察逻辑思维. 我这次的两道题目主要是围绕IO_FILE的利用展开,其次是注重考察利用思路. Pwn400 漏洞 Welcome to life Crowdfunding~~ ============================== 1.Create a…
题目位置 https://gitee.com/hac425/blog_data/tree/master/wdb babyheap 通过分配和释放构建 2 个 fastbin 链 利用 show 功能, leak heap 的基地址 然后可以在 heap 伪造 fastbin , 造成 overlap chunk 修改 chunk size ,同时伪造 free chunk unlink 攻击 , 可以控制 ptr_table 然后通过 修改 edit_count 实现多次写 改 __free_h…
前言 又是一道令人怀疑人生的 baby 题. 这道题利用思路非常巧妙,通过 堆溢出 和 fastbin 的机制构造了 information leak, 然后通过 fastbin attack 可以读写 malloc_hook , 然后使用 one_gadget 来 getshell. 题目和 idb 文件:https://gitee.com/hac425/blog_data/tree/master/babyheap 正文 程序涉及的结构体 info 的结构如下,可以通过 allocate 功能…
前言 对 0ctf2018 的 pwn 做一个总结 正文 babystack 漏洞 非常直接的 栈溢出 ssize_t sub_804843B() { char buf; // [esp+0h] [ebp-28h] return read(0, &buf, 0x40u); } 这个题的难点在于 用 python 启动了该程序同时过滤了 stdout 和 stdout #!/usr/bin/python -u # encoding: utf-8 from pwn import * import r…