溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

緩沖區(qū)溢出-canary保護(hù)

發(fā)布時(shí)間:2020-07-20 12:57:38 來(lái)源:網(wǎng)絡(luò) 閱讀:390 作者:Margin_51cto 欄目:安全技術(shù)

本文視頻:
????????? 如果文字過(guò)于枯燥,可觀看在線(xiàn)視頻:https://edu.51cto.com/sd/16514

基礎(chǔ)知識(shí):

??????? 我們知道在32位操作系統(tǒng)上,主要是溢出棧緩沖區(qū),覆蓋函數(shù)返回地址來(lái)達(dá)到劫持程序的木的,那么Linux為了防御該問(wèn)題,使用了canary來(lái)保護(hù)函數(shù)的返回地址。

canary保護(hù)是Linux眾多保護(hù)機(jī)制的一種,主要的作用是防御溢出***。他的工作原理是在函數(shù)執(zhí)行時(shí),取gs:0x14的值放到某一位置中,我們假設(shè)叫A,那么在程序執(zhí)行結(jié)束后,把A位置的值和gs:0x14的值進(jìn)行異或如果結(jié)果為0說(shuō)明沒(méi)有被修改,否則被修改了。

下面我們來(lái)通過(guò)代碼來(lái)查看效果

首先我們不使用canary防護(hù):gcc -m32 -o0 canary.c -o canary

緩沖區(qū)溢出-canary保護(hù)

使用canary防護(hù):gcc -fstack-protector-all -m32 -o0 canary.c -o canary

緩沖區(qū)溢出-canary保護(hù)

在截圖中標(biāo)紅的是我們加入-fstack-protector-all帶來(lái)的效果,在開(kāi)頭取gs:0x14的數(shù)據(jù)保存到ebp-exc的位置

第二個(gè)標(biāo)紅的地方是講ebp-0xc位置的數(shù)據(jù)拿出來(lái)和gs:0x14的值進(jìn)行比對(duì),如果想要更改函數(shù)返回地址的值,必須要先覆蓋canary的值,而canary的值是隨機(jī)的,所以如果沒(méi)有辦法獲取到canary的值,是沒(méi)有辦法做到溢出***的。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI