高版本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。

image-20240602185025483

image-20240602184314087

tchache[0]处的加密运算过程:

0x64aace8fe^0x64aace8fe2a0=0x000064ac84230a5e
密钥^明文=密文

破解如下(让密文^密钥=明文)

img
注意:2.35版本,当堆从bin取出,fd所存数据最低1位会变00,所以偏移还要自己调试一番

变位 密文^密钥+偏移=明文

posted @   蟇窳瓨  阅读(75)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
点击右上角即可分享
微信分享提示