高版本libc堆fd指针绕过
高版本glibc堆fd指针加密绕过
参考资料:[原创]glibc高版本堆题攻击之safe unlink-Pwn-看雪-安全社区|安全招聘|kanxue.com
堆指针加密是在2.32版本引进的,作用在tcache和fastbin。主要是对fd指针进行异或操作来使得不好利用UAF等需要fd指针的手法。
从一个例子了解这个保护机制bin
加密过程:当前被释放堆块fd指针地址>>12(就是3位)后,与当前fd指针应该指向的位置(在tchache中就是前一个堆块的fd指针地址)进行异或^操作,便完成加密。把加密内容放入fd指针。 ---
特别注意:第一个释放的堆块是与0进行异或,因为它前面没有堆。其fd所存的值便是密钥,可以破解各个堆的地址。
这里举一个例子,例题只释放2个堆入tcache。
tchache[0]处的加密运算过程:
0x64aace8fe^0x64aace8fe2a0=0x000064ac84230a5e
密钥^明文=密文
破解如下(让密文^密钥=明文)
注意:2.35版本,当堆从bin取出,fd所存数据最低1位会变00,所以偏移还要自己调试一番
变位 密文^密钥+偏移=明文
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)