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 暂时接触到了两种针对堆分配机制中fastbin的攻击方式,double free和house of spirit Double free 基本原理 与uaf是对free之后的指针直接进行操作不同,double free通过利用fastbin对堆的分配机制,改写在fastbin中的chunk,实现对指定内存的堆块分配. 先正常释放chunk1和chunk2 此时重新释放chunk1(连续两次释放相同的堆块会报错) double free通过在fastbin数组中形成m…
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…
概述 这次的胖哈博杯我出了Pwn400.Pwn500两道题目,这里讲一下出题和解题的思路.我个人感觉前两年的Pwn题更多的是考察单一的利用技巧,比我这有个洞怎么利用它拿到权限.但是我研究了一些最近的题目发现,Pwn题目逐步从考察利用技巧变为考察逻辑思维. 我这次的两道题目主要是围绕IO_FILE的利用展开,其次是注重考察利用思路. Pwn400 漏洞 Welcome to life Crowdfunding~~ ============================== 1.Create a…
HITCON-Training-Writeup 原文链接M4x@10.0.0.55 项目地址M4x's github,欢迎star~ 更新时间5月16 复习一下二进制基础,写写HITCON-Training的writeup,题目地址:https://github.com/scwuaptx/HITCON-Training Outline Basic Knowledge Introduction Reverse Engineering Static Analysis Dynamic Analysis…
get_started_3dsctf_2016 关键词:ROP链.栈溢出.mprotect()函数 可参考文章(优质): https://www.cnblogs.com/lyxf/p/12113401.html #!python #coding:utf-8 from pwn import * from LibcSearcher import * context.log_level = 'debug' #context.arch = 'i386' elf = ELF('./get_started_…
前言 ​ 对一些有趣的堆相关的漏洞的利用做一个记录,如有差错,请见谅. ​ 文中未做说明 均是指 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…
前言 这是前几天国外一个 老哥 提出的一种思路 ,学习了一下感觉其中的堆布局的手法还不错,做个分享与记录. 这种利用手法的主要特点是不需要 leak libc的地址,通过 堆内存的布局 和 堆相关的漏洞(uaf 等) 就可以 getshell.下面一个示例的题目为例介绍一下 相关文件位于 http://t.cn/Ru0eX62 漏洞分析 查看开启的保护措施 04:44 haclh@ubuntu:house_of_roman $ checksec ./new_chall [*] '/home/ha…