3

堆块的重叠 - CH13hh

 3 weeks ago
source link: https://www.cnblogs.com/CH13hh/p/18147686
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

堆块的重叠

堆块重叠

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

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

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

3419447-20240420135126354-1494423202.png

64位ida载入

3419447-20240420135252251-794634210.png
3419447-20240420135305052-1457666746.png

我们看看实现的功能

3419447-20240420135553475-493530094.png

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

3419447-20240420135949662-1118677673.png
3419447-20240420140120077-408580402.png
3419447-20240420140208050-1645388997.png
3419447-20240420140229869-529890761.png

思路是: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我再详细解释

3419447-20240420141527022-403591530.png
3419447-20240420145110168-1959130634.png

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

3419447-20240420142014383-66146742.png

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

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

3419447-20240420142437831-1095294073.png
3419447-20240420143644051-1558574987.png
3419447-20240420143440496-947109202.png

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

3419447-20240420145342304-1464483204.png

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK