- 2024-06-11堆基础知识
arenachunk通俗地说,一块由分配器分配的内存块叫做一个chunk,包含了元数据和用户数据。具体一点,chunk完整定义如下:structmalloc_chunk{INTERNAL_SIZE_Tmchunk_prev_size;/*Sizeofpreviouschunk(iffree).*/INTERNAL_SIZE_Tmchunk_size;/
- 2024-05-02[CISCN 2022 华东北] duck
[CISCN2022华东北]duckUAF|leak_libc|leak_heap_base|指针加密|unsortedbin|one_gadget[*]'/home/bamuwe/duck/pwn'Arch:amd64-64-littleRELRO:FullRELROStack:CanaryfoundNX:NXenabledPIE:PIEenabled$c
- 2024-04-27pwn知识——劫持tcache_perthread_struct(Ubuntu22.04之前)
前言(可忽略)堆不愧是堆...知识点真的要多用动调查看堆的状态才好理解tcache_perthread_struct的结构源码#defineTCACHE_MAX_BINS64/*Weoverlaythisstructureontheuser-dataportionofachunkwhenthechunkisstoredintheper-threadcache.*/typedefst
- 2024-04-23pwn知识——劫持__malloc_hook(在加入tcache以后)
导论动调是最好的导师!malloc_hook函数解析malloc_hook是malloc的钩子函数,在执行malloc时,会先检测__malloc_hook的值,如果malloc_hook的值存在,则执行该地址(值里边表现为十六进制,可以成为地址),也就是说,如果我们成功劫持malloc_hook以后并修改它的值为one_gadget,我们就能getshell并
- 2023-11-09Glibc高版本堆利用方法总结
截止到目前,主要总结在2.35~2.37之间仍然残存的堆利用手法。可以在Bilibili上观看视频进行学习,或者在Youtube上观看视频进行学习。进入到glibc-2.31之后,很多原有的堆利用方法就失效,因此glibc给堆分配机制陆陆续续打上了很多patch,目前来看,与堆利用有关的patch有:tcachebin堆指
- 2023-10-30一文带你理解tcache缓存投毒
tcache结构分析Tcache(ThreadCache)是glibc(GNUCLibrary)从2.26版本开始引入的一个特性,旨在提升内存分配性能。在tcache中,每个线程都有自己的缓存,可以减少线程间的互斥和锁的竞争。默认情况下,大小小于等于1032(0x408)字节的chunk会被放入tcache中。分配释放:当程序进行
- 2023-10-20堆入门
序翻了下笔记,翻到篇之前写的比较基础的、简洁的Glibc内存管理-ptmalloc2机制玉门学习笔记,这是刚开始学堆的时候写的,难免会有些描述不当的地方。学堆的话,有空必须得研读一下源码。但是前期学习可以先不研究得太过细、过于理念,这样会卡很久的进度,进步缓慢。我是由简入繁,了解
- 2023-10-13tcache_stashing_unlink_attack
tcachestashingunlinkattack实现的效果和unsortedbinattack有点相似,可以向任意地址写一个较大的数如果构造合理,还可以实现任意地址分配chunkmalloc.c:line3635if(in_smallbin_range(nb)){idx=smallbin_index(nb);bin=bin_at(av,idx);
- 2023-08-29Heap 0x07--HGAME 2023 week2--heap
一个拖了很久的复现,这个比赛在23年初,但是年初的时候水平实在是不够,直接摸掉了后续复现的时候也只有四月多复现到hgameweek2的那个非栈上fmtstr拖着拖着就把剩的三个堆题拖到现在了,开始复现,同时也算是对堆的一种学习吧0x01fast_note先从2.23的堆入手,进去之后一眼uaf复现主要
- 2023-03-17hitcon_ctf_2019_one_punch
hitcon_ctf_2019_one_punch在2.29及以后得版本中对unsordedbin的进行了双向链表检查,故unsortedbinattack就不可以再用了,不过tcachestashingunlinkattack可以达到
- 2023-01-04tcache check
structtcache_perthread_struct*keytcache_entry中增加了一项structtcache_perthread_struct*key,将chunk放入tcache后,会将key修改为tcache。typedefstructtcache_
- 2022-11-03house of botcake
HouseofBotcake先看看啥是houseofbotcake:https://forum.butian.net/index.php/share/1709当free掉一个堆块进入tcache时,假如堆块的bk位存放的key==tcache_k