首页 > 其他分享 >高版本libc堆fd指针绕过

高版本libc堆fd指针绕过

时间:2024-06-03 14:23:19浏览次数:23  
标签:加密 堆块 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

标签:加密,堆块,libc,异或,fd,版本,指针
From: https://www.cnblogs.com/myxa/p/18228800

相关文章

  • 输入a和b两个整数,按先大后小的顺序输出a和b(用指针变量处理)
    解题思路:        定义两个(int*)型指针变量p1和p2,使它们分别指向a和b。使p1指向a和b中的大者,p2指向小者,顺序输出*p1,*p2就实现了按先大后小的顺序输出a和b。编写程序:运行结果:程序分析:        输入a的值45,b的值78,由于a<b,将p1的值和p2的值交换,即将p1的指向......
  • 01.Alpine编译glibc
    概要本文档采用glibc2.28版本作为示例,模拟内网环境无法访问github等开源社区为精简docker容器镜像,采用Alpine镜像,需要手动编译glibc源代码制作编译好的glibc二进制文件获取glibc二进制文件构建工具#内网环境可下载该工具包手动上传到服务器gitpullhttps://github.com/s......
  • 高版本glibc堆fd指针加密绕过
    高版本glibc堆fd指针加密绕过参考资料:[原创]glibc高版本堆题攻击之safeunlink-Pwn-看雪-安全社区|安全招聘|kanxue.com堆指针加密是在2.32版本引进的,作用在tcache和fastbin。主要是对fd指针进行异或操作来使得不好利用UAF等需要fd指针的手法。从一个例子了解这个保护机制bin......
  • pwn学习-ret2libc
    昨天学习了re2syscall,该方法主要是系统中没有system()函数,也没有/bin/sh字符串,一般该二进制程序使用staticlink静态链接,可以找到很多的gadget,我们可以利用这些gadget进行系统调用但是在动态链接时,gadget就变少了,也是同样的没有system()函数,这时我们需要再函数动态绑定的libc中找......
  • 通过指针变量访问整型变量
    有两个与指针变量有关的运算符:(1)&:取地址运算符。(2)*:指针运算符(或称间接访问运算符)。例如:&a为变量a的地址,*p为指针变量p所指向的存储单元。编写程序:运行结果:程序分析:        (1)在程序第5行虽然定义了两个指针变量pointer_1和pointer_2,但它们并未指向任何一个......
  • 双指针练习:盛水最多的容器
    题目链接:11.盛水最多的容器题目描述:给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i,0) 和 (i,height[i]) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜......
  • 双指针练习:复写0
    1.题目链接:1089.复写零2.题目描述:给你一个长度固定的整数数组 arr ,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。注意:请不要在超过该数组长度的位置写入元素。请对输入的数组 就地 进行上述修改,不要从函数返回任何东西。3.解法(原地复写-双指针):算法......
  • 指针的详解延续二
     第一篇移步CSDNhttps://mp.csdn.net/mp_blog/creation/editor/139301675 第二篇移步CSDN​​​​​​​​​​​https://mp.csdn.net/mp_blog/creation/editor/139329194目录一、指针数组二、字符指针变量三、数组指针变量四、二维数组传参的本质五、函数指针变量 ......
  • kube-ovn 1.12基于bfd探测网关可用性
    安装kube-ovn1.12dockerpullkubeovn/kube-ovn:v1.12.2gitclonehttps://github.com/kubeovn/kube-ovn.gitcdkube-ovngitcheckoutrelease-1.12makekind-installkgetnode-owide增加启动参数kube-ovn-controller增加启动参数keditdeploykube-ovn-controlle......
  • 为bufdataset增加ftVariant支持
    最近使用bufdataset时发现可以创建ftVariant类型,但无法正常读写。经搜索,发现fpc官方早在2011年就有解决方案,但到今天最新的fpc3.3.1还没支持,按issues的方法,经测试读写ok,如果你也需要在bufDataSet要用到ftVariant,可以参考以下方法:打开fpcsrc\packages\fcl-db\src\base\bufdataset.......