高版本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编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步