當前位置:編程學習大全網 - 編程語言 - 系統在該應用程序中檢測到基於堆棧的緩沖區溢出,這可能允許惡意用戶獲得對該應用程序的控制?

系統在該應用程序中檢測到基於堆棧的緩沖區溢出,這可能允許惡意用戶獲得對該應用程序的控制?

如果有溢出漏洞,可能被病毒認領,或者被高權限修改。這只是壹個警告。原因如下:這是啟動畫面,文件損壞、修改、丟失。從普通機器上拷貝logonui.exe文件的u盤。

解決方案:

1.使用CD或USB閃存驅動器輸入pe,並將該文件復制到c:\windows\system32\dllcache和c:\windows\system32。

2.如果它已經存在,請替換它,然後重新啟動它。

緩沖區溢出原理

緩沖區是計算機內存中的壹個連續區域,可以容納同壹數據類型的多個實例。緩沖區可以是堆棧(自動變量)、堆(動態內存)和靜態數據區(全局或靜態)。在C/C++語言中,通常使用字符數組和malloc/new等內存分配函數來實現緩沖區。溢出意味著數據被添加到分配給緩沖區的內存塊之外。

緩沖區溢出是最常見的程序缺陷。

堆棧框架結構的引入,為高級語言實現函數或過程調用提供了直接的硬件支持,但由於函數返回地址等重要數據存儲在程序員可見的堆棧中,也給系統安全帶來了隱患。如果函數的返回地址被修改為指向精心編排的惡意代碼,就可能危及系統安全。

另外,堆棧的正確恢復依賴於堆棧的EBP值的正確性,但是EBP字段與局部變量相鄰,如果在編程中通過局部變量的地址偏移量有意無意地篡改EBP值,程序的行為將變得非常危險。

由於C/C++語言沒有數組邊界檢查機制,當寫入本地數組緩沖區的數據超過其分配的大小時,就會發生緩沖區溢出。攻擊者可以利用緩沖區溢出篡改進程運行時堆棧,從而改變程序的正常流向,可能導致程序崩潰或系統權限被竊取。

如果將長度為16字節的字符串賦給acArrBuf數組,系統將從acArrBuf[0]到高位地址填充堆棧空間,這將覆蓋EBP值和函數返回地址。如果攻擊者用有意義的地址覆蓋返回地址的內容(否則會出現段錯誤),函數返回時會在該地址執行預先安排好的攻擊代碼。

最常見的方法是通過創建緩沖區溢出使程序運行壹個用戶外殼,然後通過外殼執行其他命令。如果程序有root或suid執行權限,攻擊者就會得到壹個有root權限的外殼,然後就可以隨意操作系統了。

除了通過溢出堆棧緩沖區來更改返回地址之外,還可以重寫局部變量(尤其是函數指針)來利用緩沖區溢出缺陷。註意,本文所描述的堆棧緩沖區溢出不同於廣義的“堆棧溢出”,除了局部數組溢出和內存覆蓋外,還可能是調用層次過多(尤其是遞歸函數)或局部變量過大造成的。

  • 上一篇:中行電子保險卡保單怎麽註冊
  • 下一篇:求大學生職業生涯規劃範文(約1500字)
  • copyright 2024編程學習大全網