新聞中心
我不確信我完全理解緩沖區(qū)溢出。我知道在向目標機器插入代碼時會導致嚴重的緩沖區(qū)管理缺陷,但我不知道黑客是怎樣來使這些代碼得以執(zhí)行的——很可能是在他或她獲得了目標機器的控制權的時候發(fā)生的。黑客能夠保證代碼被調用嗎?亦或者這其實僅僅是一個概率問題?

創(chuàng)新互聯(lián)公司成立與2013年,先為灌云等服務建站,灌云等地企業(yè),進行企業(yè)商務咨詢服務。為灌云企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。
專家回答:
當程序或進程試圖在其分配的數(shù)據(jù)存儲區(qū)域、或緩沖區(qū)中存儲超出預計的數(shù)據(jù)時,緩沖區(qū)溢出就會發(fā)生。由于創(chuàng)建的緩沖區(qū)中只能存儲有限的數(shù)據(jù),額外的信息會溢出到鄰近的緩沖區(qū)中。當這種情況發(fā)生時,原來存儲在這些緩沖區(qū)中的有效數(shù)據(jù)會被破壞或覆蓋。函數(shù)中的局部變量的緩沖區(qū)溢出可能會覆蓋該函數(shù)的返回地址。(返回地址指向該函數(shù)執(zhí)行完成后應該執(zhí)行的下一條指令)。這可能會導致段錯誤,而段錯誤(segmentation fault)則可以使程序崩潰。在某些特定情形下,程序崩潰后黑客會收到一個shell提示(shell prompt:提示用戶輸入命令行),這就把計算機的控制權交給了黑客。更復雜的攻擊是:黑客用期望執(zhí)行的代碼的指針重寫返回地址,而不僅僅是讓計算機崩潰。
基于堆棧的緩沖區(qū)溢出攻擊是最常見的,但讓我們看看在JPEG處理(GDI +)開發(fā)中基于堆的緩沖區(qū)侵占,見識緩沖區(qū)溢出攻擊的巧妙之處。
微軟的動態(tài)鏈接庫文件稱為GDIPlus.dll,其中包含了圖形設備接口以及(GDI +)應用程序編程接口(API)庫。它允許程序員表示圖形對象,并傳輸?shù)捷敵鲈O備--如顯示器和打印機。這些DLL有處理JPEG圖像文件的能力,但它在檢查其實際的值之前允許JPEG文件聲明注釋區(qū)域的長度,。這時就可能會導致基于堆的緩沖區(qū)溢出?;诙训木彌_區(qū)攻擊發(fā)生在數(shù)據(jù)副本被寫入到位于堆內的緩沖區(qū)的時候。這意味著非可執(zhí)行堆棧保護機制可以被繞過,最終導致系統(tǒng)十分脆弱,并允許黑客指向他們希望運行的下一個進程的代碼。諷刺的是,黑客可以在JPEG文件的注釋區(qū)域存儲這些代碼?,F(xiàn)在,只要被攻擊者查看已經(jīng)被篡改的圖像,黑客就可以利用這個漏洞了。
緩沖區(qū)溢出攻擊如此常見是因為編寫程序使用的都是級別相對較低的編程語言,如匯編語言,C和C + +,它們沒有自動給緩存定限的功能。因此程序檢查到數(shù)組或指針時,要求程序員手動管理分配內存的大小。雖然黑客不能保證每一次溢出攻擊代碼都能成功運行,但鑒于各種病毒以及蠕蟲的成功案例,可以說他們仍然可以有很高的成功率。要查看緩沖區(qū)溢出是如何進行的,請訪問以下網(wǎng)站的Java程序演示:
http://nsfsecurity.pr.erau.edu/bom_docs/Demos/script.html。另外一個很好的初學者學習緩沖區(qū)溢出攻擊的網(wǎng)站是:
http://www.securiteam.com/securityreviews/5OP0B006UQ.html。
【編輯推薦】
- 防止緩沖區(qū)溢出攻擊的策略
- 如何防范Linux操作系統(tǒng)下緩沖區(qū)溢出攻擊
- 本地緩沖區(qū)溢出攻擊的防護
本文題目:緩沖溢出攻擊是如何發(fā)生的
分享網(wǎng)址:http://www.dlmjj.cn/article/dppicce.html


咨詢
建站咨詢
