首页 > 其他分享 >堆块的重叠

堆块的重叠

时间:2024-04-20 14:44:05浏览次数:25  
标签:重叠 0x18 堆块 free 修改 大小 got 指针

堆块重叠

对堆的了解不是很多,大部分都是自己网上找的资料了解的,以后每一道堆题我都会仔仔细细的写出来。这里先拿一道做示范

题目链接:链接:https://pan.baidu.com/s/1HbHkdHbEzt4UIe44gW8uqg 提取码:Ch13

看保护,pie保护关闭,延迟绑定,got表可以修改

64位ida载入

我们看看实现的功能

实际上这个就是指针用来找到我们堆的位置

思路是:1.我们先申请一个大小为0x18大小的堆,和一个大小0x10的堆
2.然后编辑第1个堆输入/bin/sh\x00并且使size位为0x41使指针位置变化
3.然后free第二个堆申请一个大小为0x30大小的堆(实际上加上头部是0x41,刚刚好申请到刚才free的堆)
4.通过覆盖到指针的位置为got表来泄露libc地址
5.通过编辑堆修改free@got为system地址
6.通过free第给堆拿到shell

先贴一下wp我再详细解释

为什么申请0x18大小后不是(0x18+0x11)大小而是0x21

因为我们申请0x18时候,下一个chunk的prev_size也是可以被我们利用的加上刚刚好

\0x41怎么样来的,这个主要是我们溢出修改第二个chunk(第二个chunk指针)的size段,实际上就是修改指针

修改之前

修改后

那么我们就控制了指针然后就可以泄露libc地址和修改got表了,然后拿到shell

以上都是我本人的理解如果有任何不对的,烦请各位师傅及时指出

标签:重叠,0x18,堆块,free,修改,大小,got,指针
From: https://www.cnblogs.com/CH13hh/p/18147686

相关文章

  • 2580. 统计将重叠区间合并成组的方案数(中等)
    核心思想先按第一个元素排序,原区间重合的合并为一个,计算合并完后的区间个数。每个区间都有2个选择,res不断乘2。classSolution{publicintcountWays(int[][]ranges){longres=1;finalintMOD=(int)(1e9+7);Arrays.sort(ranges,(......
  • 代码随想录算法训练营第36天| 435. 无重叠区间、763.划分字母区间、56. 合并区间
    435.无重叠区间题目链接:无重叠区间题目描述:给定一个区间的集合intervals,其中intervals[i]=[starti,endi]。返回需要移除区间的最小数量,使剩余区间互不重叠。解题思想:这道题目和射气球很像。*“需要移除区间的最小数量,使剩余区间互不重叠”*等效于求重叠区......
  • 代码随想录训练营Day36:● 435. 无重叠区间 ● 763.划分字母区间 ● 56. 合并区间
    435.无重叠区间题目链接https://leetcode.cn/problems/non-overlapping-intervals/description/题目描述思路直接统计重叠区间的个数,就是需要删除的个数publicinteraseOverlapIntervals(int[][]intervals){Arrays.sort(intervals,(a,b)->Integer.com......
  • 统计将重叠区间合并成组的方案数
    题目描述给你一个二维整数数组 ranges ,其中 ranges[i]=[,] 表示 到 之间(包括二者)的所有整数都包含在第 i 个区间中。你需要将 ranges 分成 两个 组(可以为空),满足:每个区间只属于一个组。两个有 交集 的区间必须在 同一个 组内。如果两个区间有至少 一个......
  • 统计将重叠区间合并成组的方案数.18098728
    统计将重叠区间合并成组的方案数给你一个二维整数数组ranges,其中ranges[i]=[starti,endi]表示starti到endi之间(包括二者)的所有整数都包含在第i个区间中。你需要将ranges分成两个组(可以为空),满足:每个区间只属于一个组。两个有交集的区间必须在同一个组内......
  • 【工程应用九】再谈基于离散夹角余弦相似度指标的形状匹配优化(十六角度量化+指令集加
    继去年上半年一鼓作气研究了几种不同的模版匹配算法后,这个方面的工作基本停滞了有七八个月没有去碰了,因为感觉已经遇到了瓶颈,无论是速度还是效率方面,以当时的理解感觉都到了顶了。年初,公司业务惨淡,也无心向佛,总要找点事情做一做,充实下自己,这里选择了前期一直想继续研究的基于......
  • Qt 布局中控件重叠、挤压的解决方法
    问题描述:在QtDesigner中设计布局时,对所有控件使用QGridLayout、QHBoxLayout或QVBoxLayout布局设置。可以正常预览(Preview),但C++编译后,所有控件挤到一起,布局设置失效。问题解析:预览时正常,说明不是Qt的问题,应该与C++代码有关。问题解决:查看与ui关联的代码,发现这个......
  • 435. 无重叠区间c
    typedefstructnode{intleft;intright;}bounds;intcmp(constvoid*a,constvoid*b){bounds*x=(bounds*)a;bounds*y=(bounds*)b;if(x->right>y->right)return1;return-1;}interaseOverlapIntervals(int**interva......
  • (36/60)无重叠区间、划分字母区间、合并区间
    无重叠区间leetcode:435.无重叠区间贪心法思路去掉最少的区间数就是最少重叠区间对的个数。(成对的算,因为一对里面需要去掉一个)类似射气球的处理方式。左边界法:按左边界从小到大排序。遍历每个元素。取当前元素右边界为right判断是否重叠。如果[i]right>[i+1]left......
  • 代码随想录算法训练营第三十六天 | 56. 合并区间,763.划分字母区间,435. 无重叠区间
    435.无重叠区间 已解答中等 相关标签相关企业 给定一个区间的集合 intervals ,其中 intervals[i]=[starti,endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。 示例1:输入:intervals=[[1,2],[2,3],[3,4],[1,3]]输出:1解......