💧對(duì)于堆溢出,有很多漏洞可以和它打配合,可以說是堆里面很常見的漏洞,常見的有off_by_null,House系列(后續(xù)學(xué)習(xí)到了會(huì)繼續(xù)更新這個(gè)系列),unlink,等等。 今天來看一個(gè),堆溢出修改指針,導(dǎo)致libc泄露以及通過指針來修改got表的題目。 題目連接我放下面了,對(duì)堆有興趣
?堆溢出漏洞是一種常見的漏洞,存在多種配合漏洞,如off_by_null、House系列、unlink等。本文將探討堆溢出修改指針,導(dǎo)致libc泄露以及通過指針來修改got表的題目。
題目鏈接?:
https://pan.baidu.com/s/1_j2gw22PQHK-PiC8HUcVvg?pwd=d2wt
提取碼:d2wt
本題目為32位,got表可以修改。在堆題目中,保護(hù)全開的情況很常見,需要關(guān)注保護(hù)措施。若got表可以修改,可嘗試修改free或malloc的got表。若無法修改got表,可以考慮__free_hook和__malloc_hook。
32位ida靜態(tài)分析顯示有一些功能函數(shù),其中add函數(shù)申請(qǐng)了兩個(gè)chunk,第一個(gè)大小為輸入的值,第二個(gè)為固定的0x80大小。輸入的name保存到了第二個(gè)chunk,同時(shí)將第一個(gè)chunk的指針放到了第二個(gè)chunk的數(shù)據(jù)里。
update函數(shù)對(duì)輸入的chunk的判斷依據(jù)大小是name chunk和輸入數(shù)據(jù)chunk之間的距離,若先申請(qǐng)一些chunk將它們隔開,則可實(shí)現(xiàn)較大的堆溢出。
delete函數(shù)將chunk1和chunk2都進(jìn)行了釋放。
show函數(shù)可以進(jìn)行name和text的打印。
?思路:申請(qǐng)chunk時(shí)首先到bin里查找,若無則從Topchunk切割一塊。若申請(qǐng)的大小超過0x20000,則不是mmap分配。釋放時(shí)若兩塊chunk物理相鄰,則會(huì)合并。通過申請(qǐng)和釋放chunk,可以實(shí)現(xiàn)堆溢出。
指針修改之前:
修改之后:
chunk1的指針換成了free_got表地址,打印chunk1時(shí)可進(jìn)行泄露,之后修改chunk1即可修改free_got表為system,最后釋放chunk2(/bin/sh)即可獲得shell。
exp:
;丶铱纯聪盗谐掷m(xù)更新..........
小編推薦閱讀機(jī)器學(xué)習(xí):神經(jīng)網(wǎng)絡(luò)構(gòu)建(下)
閱讀華為Mate品牌盛典:HarmonyOS NEXT加持下游戲性能得到充分釋放
閱讀實(shí)現(xiàn)對(duì)象集合與DataTable的相互轉(zhuǎn)換
閱讀鴻蒙NEXT元服務(wù):論如何免費(fèi)快速上架作品
閱讀算法與數(shù)據(jù)結(jié)構(gòu) 1 - 模擬
閱讀5. Spring Cloud OpenFeign 聲明式 WebService 客戶端的超詳細(xì)使用
閱讀Java代理模式:靜態(tài)代理和動(dòng)態(tài)代理的對(duì)比分析
閱讀Win11筆記本“自動(dòng)管理應(yīng)用的顏色”顯示規(guī)則
閱讀本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請(qǐng)發(fā)郵件[email protected]
湘ICP備2022002427號(hào)-10 湘公網(wǎng)安備:43070202000427號(hào)© 2013~2025 haote.com 好特網(wǎng)