鐵之狂傲

 取回密碼
 註冊
搜尋

切換到指定樓層
1#
目前緩衝區溢位(Buffer Overflows)
是駭客最常利用的程式設計缺失之一
原因非常簡單
緩衝區溢位比密碼問題或組態設定錯誤難找。
通常有經驗的人才能找到緩衝區溢位的問題。
但是,個人通常會公佈他們發現的緩衝區溢位問題,
而且還會公佈任何人都可以在電腦上執行的script或程式。


什麼是緩衝區溢位?
簡單的說,緩衝溢位就是嘗試在電腦的記憶體上塞入過多的資訊。
舉例來說,若只建立一個8位元的變數,但是卻希望塞入9個位元的資料,那麼要怎麼塞入第9個位元?
答案是塞入第8個位元之後即會產生緩衝區溢位的問題。
若試著將大量的資料塞入變數,就有可能覆蓋掉一些系統的重要程序。
在緩衝區溢位的問題中,某X最感興趣(?)部分是"記憶體堆疊"(stack)


堆疊控制程式之間的切換,並在某部分的程式(或函式)執行完畢後,告訴系統下一個將要執行的程式碼。
堆疊同樣也會儲存函式所用的區域變數。
在發生緩衝區溢位的問題時,就可以將命令塞入儲存堆疊的變數之中。
放在區域變數內的資訊,大到足以塞滿整個堆疊,並覆蓋指向新命令的返回位置。
這些命令或許是shell程式執行的命令(提供互動存取),也可能是啟動其他應用程式,或許也可以變更組態設定檔案(如inetd.conf)
並讓駭客透過新的組態設定或存取權限。


緩衝區溢位的問題非常棘手
因為他可以讓駭客在目標的系統上執行任何命令
大多數緩衝區溢位的script,允許駭客建立其他存取目標系統的方法。

EX:利用緩衝區溢位在inetd.conf檔案中,增加一行提供連接埠1524新服務的敘述(ingress lock),將允許駭客存取root shell。


之後看是要開後門,格式化硬碟,竊取資料,或者是任何他想要做的事,都隨便在他的一念之間,只要他寫相關的入侵程式就好,而這也是為什麼當前全球駭客入侵的手法70%都使用「緩衝區溢位」攻擊的原因,實在是威力強大。


要防堵「緩衝區溢位」最好的辦法是你比駭客先找到你的系統有「緩衝區溢位」問題,然後將它修補。
不過這也很難,因為目前大多數的程式仍然有緩衝區溢位的問題,想一一修補實在是需要過人的"根性"(?)。


值得留意的是,緩衝區溢位的問題不只侷限在存取遠端系統。在使用者的電腦系統上,緩衝區溢位也可用來更新使用者的存取等級。本機端的緩衝區危險程度,不見得比遠端系統漏洞還低。

附註:
許多C語言公用字串複製函式,不會預先檢查字串長度。
EX:strcat()、strcpy()、sprintf()、vstrintf()、scanf()和gets()公用函式
這些都不會預先檢查複製資料的字串或緩衝區容量。

但某些自動化的script,可用來尋找潛在的緩衝區溢位問題。
EX:像是SPLINT,可在程式碼編譯之前找到緩衝區溢位的問題。

---------------------------
上"古狗"找的↓
http://www.hacker.org.tw/mirrorz/Hackland/bo1.html
 
轉播0 分享0 收藏0

回覆 使用道具 檢舉

總評分:  聲望 + 3   檢視全部評分
闇之鬥魂    發表於 07-2-16 07:24 聲望 + 3 枚

之前也有看過一篇針對這些函式
strcat()、strcpy()、sprintf()、vstrintf()、scanf()和gets()
可能的發生問題
gets()一般不建議使用
對於scanf()
則可以用
scanf("%5s",str);
來限定字元數目來避免緩衝區溢位
 

回覆 使用道具 檢舉

你需要登入後才可以回覆 登入 | 註冊

存檔|手機版|聯絡我們|新聞提供|鐵之狂傲

GMT+8, 25-1-24 06:25 , Processed in 0.026069 second(s), 16 queries , Gzip On.

回頂部