您的位置:首頁 > 軟件教程 > 教程 > 深入探討堆溢出漏洞及利用

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

來源:好特整理 | 時間:2024-05-19 15:48:21 | 閱讀:145 |  標簽: 漏洞   | 分享到:

💧對于堆溢出,有很多漏洞可以和它打配合,可以說是堆里面很常見的漏洞,常見的有off_by_null,House系列(后續(xù)學習到了會繼續(xù)更新這個系列),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靜態(tài)分析顯示有一些功能函數(shù),其中add函數(shù)申請了兩個chunk,第一個大小為輸入的值,第二個為固定的0x80大小。輸入的name保存到了第二個chunk,同時將第一個chunk的指針放到了第二個chunk的數(shù)據(jù)里。

update函數(shù)對輸入的chunk的判斷依據(jù)大小是name chunk和輸入數(shù)據(jù)chunk之間的距離,若先申請一些chunk將它們隔開,則可實現(xiàn)較大的堆溢出。

delete函數(shù)將chunk1和chunk2都進行了釋放。

show函數(shù)可以進行name和text的打印。

?思路:申請chunk時首先到bin里查找,若無則從Topchunk切割一塊。若申請的大小超過0x20000,則不是mmap分配。釋放時若兩塊chunk物理相鄰,則會合并。通過申請和釋放chunk,可以實現(xiàn)堆溢出。

指針修改之前:

修改之后:

chunk1的指針換成了free_got表地址,打印chunk1時可進行泄露,之后修改chunk1即可修改free_got表為system,最后釋放chunk2(/bin/sh)即可獲得shell。

exp:

;丶铱纯聪盗谐掷m(xù)更新..........

小編推薦閱讀

好特網(wǎng)發(fā)布此文僅為傳遞信息,不代表好特網(wǎng)認同期限觀點或證實其描述。

相關視頻攻略

更多

掃二維碼進入好特網(wǎng)手機版本!

掃二維碼進入好特網(wǎng)微信公眾號!

本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權,請發(fā)郵件[email protected]

湘ICP備2022002427號-10 湘公網(wǎng)安備:43070202000427號© 2013~2025 haote.com 好特網(wǎng)