您的位置:首页 > 软件教程 > 教程 > 深入探讨堆溢出漏洞及利用

深入探讨堆溢出漏洞及利用

来源:好特整理 | 时间:2024-05-19 15:48:21 | 阅读:105 |  标签: 漏洞   | 分享到:

💧对于堆溢出,有很多漏洞可以和它打配合,可以说是堆里面很常见的漏洞,常见的有off_by_null,House系列(后续学习到了会继续更新这个系列),unlink,等等。 今天来看一个,堆溢出修改指针,导致libc泄露以及通过指针来修改got表的题目。 题目连接我放下面了,对堆有兴趣

?堆溢出漏洞是一种常见的漏洞,存在多种配合漏洞,如off_by_null、House系列、unlink等。本文将探讨堆溢出修改指针,导致libc泄露以及通过指针来修改got表的题目。

题目链接?: https://pan.baidu.com/s/1_j2gw22PQHK-PiC8HUcVvg?pwd=d2wt
提取码:d2wt

本题目为32位,got表可以修改。在堆题目中,保护全开的情况很常见,需要关注保护措施。若got表可以修改,可尝试修改free或malloc的got表。若无法修改got表,可以考虑__free_hook和__malloc_hook。

32位ida静态分析显示有一些功能函数,其中add函数申请了两个chunk,第一个大小为输入的值,第二个为固定的0x80大小。输入的name保存到了第二个chunk,同时将第一个chunk的指针放到了第二个chunk的数据里。

update函数对输入的chunk的判断依据大小是name chunk和输入数据chunk之间的距离,若先申请一些chunk将它们隔开,则可实现较大的堆溢出。

delete函数将chunk1和chunk2都进行了释放。

show函数可以进行name和text的打印。

?思路:申请chunk时首先到bin里查找,若无则从Topchunk切割一块。若申请的大小超过0x20000,则不是mmap分配。释放时若两块chunk物理相邻,则会合并。通过申请和释放chunk,可以实现堆溢出。

指针修改之前:

修改之后:

chunk1的指针换成了free_got表地址,打印chunk1时可进行泄露,之后修改chunk1即可修改free_got表为system,最后释放chunk2(/bin/sh)即可获得shell。

exp:

常回家看看系列持续更新..........

小编推荐阅读

好特网发布此文仅为传递信息,不代表好特网认同期限观点或证实其描述。

相关视频攻略

更多

扫二维码进入好特网手机版本!

扫二维码进入好特网微信公众号!

本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件[email protected]

湘ICP备2022002427号-10 湘公网安备:43070202000427号© 2013~2024 haote.com 好特网