• 2024-08-03常回家看看之tcachebin-attack
    常回家看看之tcachebin-attack自从glibc2.26之后出现了新的堆管理机制,及引用了tcachebin机制,tcachebin也是主要分配小堆块的,有40条bin链(0x10-0x410)那么这样的分配有很多和smallbin和fastbin重叠的部分,及malloc申请之后free掉的小堆块优先进入tcachebin中,这样的分配减小的分配
  • 2024-08-03常回家看看之fastbin_attack
    常回家看看之fastbin_attack原理分析fastbin属于小堆块的管理,这里说的fastbin_attack大多指glibc2.26之前的手法,因为自glibc2.26以后,glibc迎来了一位新成员tcachebin,它减少了堆的开销,使堆管理变得迅速而高效,而且申请的小堆块会优先进入tachebin中,只有tachebin其中一个链表满了再
  • 2024-07-29glibc2.35 CTFPwn高版本下的堆块利用
    运用exithook:劫持tls_dtor_list:例题(XYCTF2024 ptmalloc2it‘smyheappro):题目的libc版本是2.35,在glibc2.34版本的时候我们常用的exithook(比如dl_rtld_lock_recursive和dl_rtld_unlock_recursive)就被删除了,所以在这道题里面我们劫持另一个exithook,tls_dtor_list,但这里和之
  • 2024-07-06常回家看看之off_by_null(堆篇)
  • 2024-06-03高版本libc堆fd指针绕过
    高版本glibc堆fd指针加密绕过参考资料:[原创]glibc高版本堆题攻击之safeunlink-Pwn-看雪-安全社区|安全招聘|kanxue.com堆指针加密是在2.32版本引进的,作用在tcache和fastbin。主要是对fd指针进行异或操作来使得不好利用UAF等需要fd指针的手法。从一个例子了解这个保护机制bin
  • 2024-05-14pwn知识——House of Botcake
    个人理解感觉HouseofBotcake就是doublefree+overlapping+_IO_FILEattack的结合使用,需要对堆结构有着较为详细的理解,也要有能管理堆顺序的能力,建议写题的时候还是标一标堆的index,这样在利用堆的时候会比较方便些HouseofBotcake想要利用这个攻击,我们得先了解_IO_FILE的
  • 2024-05-14N1CTF2018 shopping:多线程堆题中堆溢出的应用
    介绍一种在多线程堆题中利用堆溢出达成任意地址分配的手法。我们知道,一个进程的主线程的堆管理main_arena在libc中,分配的chunk在堆段中。那么子线程的arena和堆块都在哪里呢?这一大串在libc前面一点点的anon就是给子线程留的arena和堆空间。arena和tcache管理chunk在这个内存段
  • 2024-04-23[BJDCTF 2020]YDSneedGirlfriend
    [BJDCTF2020]YDSneedGirlfriendUAF|所谓UAF漏洞是指程序在运行时通过悬空指针(悬空指针是指仍然指向已被释放内存空间的指针)访问已经被释放的内存.bamuwe@bamuwe:~/YDSneedGirlfriend$lddgirlfriendlinux-vdso.so.1(0x00007ffd09fec000)/home/bamuwe/pw
  • 2024-04-23pwn知识——劫持__malloc_hook(在加入tcache以后)
    导论动调是最好的导师!malloc_hook函数解析malloc_hook是malloc的钩子函数,在执行malloc时,会先检测__malloc_hook的值,如果malloc_hook的值存在,则执行该地址(值里边表现为十六进制,可以成为地址),也就是说,如果我们成功劫持malloc_hook以后并修改它的值为one_gadget,我们就能getshell并
  • 2024-04-20堆块的重叠
    堆块重叠对堆的了解不是很多,大部分都是自己网上找的资料了解的,以后每一道堆题我都会仔仔细细的写出来。这里先拿一道做示范题目链接:链接:https://pan.baidu.com/s/1HbHkdHbEzt4UIe44gW8uqg提取码:Ch13看保护,pie保护关闭,延迟绑定,got表可以修改64位ida载入我们看看实现的功能
  • 2024-04-06pwn知识——unlink(smallbins)
    是我的错觉么,总觉得unlink比UAF好懂好多...也有可能是我觉得做题模板比较好理解一点,真要深入的话我感觉一个头会比两个大emmmm原理及其条件原理unlink顾名思义,脱链,把一个空闲的chunk从unsortedbin里取出来,与物理相邻的chunk合成一个一个大堆块(分“前合”,“后合”’)。这里用图
  • 2024-03-28Win32堆的调试支持
    Win32堆的调试支持  为了帮助程序员及时发现堆中的问题,堆管理器提供了以下功能来辅助调试。 1:堆尾检查(HeapTailCheck)HTC,在堆尾添加额外的标记信息,用于检测堆块是否溢出。2:释放检查(HeapFreeCheck)在释放堆块时进行检查,防止释放同一个堆块。3:参数检查,对传递给堆的各种
  • 2024-01-28Windows 堆管理机制 [2] Windows 2000 – Windows XP SP1版本
    2.Windows2000–WindowsXPSP12.1环境准备环境环境准备虚拟机32位Windows2000SP4调试器OllyDbg、WinDbg编译器VC6.0++、VS20082.2堆的结构​ 在该阶段,整个堆空间主要由4个结构来维护,分别是段表(segmentlist)、虚表(VirtualAllocationlist)、
  • 2024-01-28Windows 堆管理机制 [3] Windows XP SP2 – Windows 2003 版本
    3.WindowsXPSP2–Windows20033.1环境准备环境环境准备虚拟机32位WindowsXPSP2\32位WindowsXPSP3调试器OllyDbg、WinDbg编译器VC6.0++、VS20083.2堆的结构(Windbg详细分析)​ 在该阶段,堆块的数据结构基本继承于Windows2000–WindowsXPSP1
  • 2024-01-28Windows 堆管理机制 [1] 堆基础
    声明:这篇文章在写的时候,是最开始学习这个堆管理机制,所以写得有些重复和琐碎,基于笔记的目的想写得全一些,这篇文章写的时候参考了很多前辈的文章,已在末尾标出,某些未提及到的可以在评论补充基于分享的目的,之前把所有部分都放出来了,但是全篇有八万词,pdf版本长达两百多页,全部放出看着
  • 2023-12-12金盾杯 pwn awd
    金盾杯pwnawd难点就是利用链表控制节点,理清其中的关系分析程序在初始化程序时会申请一个0x10的chunk作为一个头,在add中会申请三个堆块,第一个堆块就是用于存放第二个堆块的id,size,address,第二个堆块就是用于存放输入内容,第三个堆块就是存放第一个堆块的地址,和下
  • 2023-09-10堆利用 -- 堆块重叠
    0x01介绍堆块重叠是借助堆溢出来修改chunk的size字段让其包含多个chunk,然后就可以实现一些非法的操作,比如泄露修改chunk的fd指针。之所以能够完成重叠实际上和free函数有关,由于chunk释放的时候只会检查nextchunk的size字段是否合法,而nextchunk的获取是通过chunk+size来获取的,
  • 2023-08-22ASCII码-shellcode的技巧
    网上已经有成熟的工具了,所以就简单记录一下工具怎么用吧https://github.com/TaQini/alpha3https://github.com/veritas501/ae64.githttps://github.com/rcx/shellcode_encoder结合题目来看吧,没有开启NX保护,基本这类型题目九成九都是shellcode题程序一开始会让我们在bss段上
  • 2023-06-30libc2.23的堆学习
    堆学习libc2.23chef*​ ——堆溢出伪造fakechunk,修改free_hook为og(libc2.23-0ubuntu11.3_amd64)检查:ida分析:主程序是一个菜单,但是有点假,只是打印了一些字符串,没有什么实际的操作,直接进入选项4。这个菜单实现了堆操作增删改查。​ add函数,有一个if判断,这限制了最多只能申
  • 2023-06-28Sudo堆溢出漏洞(CVE-2021-3156)复现
    背景介绍2021年1月26日,QualysResearchLabs在sudo发现了一个缺陷。sudo解析命令行参数的方式时,错误的判断了截断符,从而导致攻击者可以恶意构造载荷,使得sudo发生堆溢出,该漏洞在配合环境变量等分配堆以及释放堆的原语下,可以致使本地提权。环境搭建环境版本•ubuntu20
  • 2023-06-15ctfpwn-堆入门之uaf(新手向)
    例题:程序保护全开,ida打开int__cdeclmain(intargc,constchar**argv,constchar**envp){init(argc,argv,envp);while(1){menu();switch((unsignedint)read_int()){case1u:new_book();break;case2u:
  • 2023-04-04堆块chunk介绍及unlink漏洞利用原理
    堆块chunk介绍及unlink漏洞利用原理chunk结构当进程动态分配内存时,系统会在堆中创建一个chunk(堆块)。chunk包含chunk头和chunk体两部分chunk头中有两个字段:prev_size:前一个chunk的size,前指的之前分配的内存,也就是低地址相邻的chunksize:当前chunk的size,size字段的低3位A,M,P不
  • 2022-12-31绿城杯uaf_pwn 分析
    绿城杯uaf_pwn分析10月11日~10月15日一、信息收集RELRO:在Linux系统安全领域数据可以写的存储区就会是攻击的目标,尤其是存储函数指针的区域。所以在安全防护的角度来说
  • 2022-12-13记一次有教益的内存碎片转储文件分析经历
    记一次有教益的内存碎片转储文件分析经历原总结调试windbgdmp内存碎片heap堆前言其实,这篇文章早在​​2021​​缘起前一阵子,有朋友在微信上发了一段​​windbg​​This
  • 2022-11-03house of botcake
    HouseofBotcake先看看啥是houseofbotcake:https://forum.butian.net/index.php/share/1709当free掉一个堆块进入tcache时,假如堆块的bk位存放的key==tcache_k