<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    緩沖區溢出攻擊的原理是什么


    發現錯別字 3個月前 提問
    回答
    1
    瀏覽
    249
    請勿發布不友善或者負能量的內容。與人為善,比聰明更重要!
    回答數量: 1
    CISAW CISP-PTE

    緩沖區溢出的攻擊原理是通過往程序的緩沖區寫超出其長度的內容,造成緩沖區的溢出,從而破壞程序的堆棧,使程序轉而執行其它指令,以達到攻擊的目的。造成緩沖區溢出的原因是程序中沒有仔細檢查用戶輸入的參數。可以利用它執行非授權指令,甚至可以取得系統特權,進而進行各種非法操作,而緩沖區溢出中,最為危險的是堆棧溢出,因為入侵者可以利用堆棧溢出,在函數返回時改變返回程序的地址,讓其跳轉到任意地址。

    緩沖區溢出攻擊的預防手段有以下這些:

    • 強制寫正確的代碼的方法。只要在所有拷貝數據的地方進行數據長度和有效性的檢查,確保目標緩沖旦中數據不越界并有效,則就可以避免緩沖區溢出,更不可能使程序跳轉到惡意代碼上。

    • 通過操作系統使得緩沖區不可執行,從而阻止攻擊者殖入攻擊代碼。通過使被攻擊程序的數據段地址空間不可執行,從商使得攻擊者不可能執行被植入被攻擊程序輸入緩沖區的代碼,這種技術被稱為緩沖區不可執行技術。

    • 改進C語言函數庫。C語言中存在緩沖區溢出攻擊隱患的系統匾數有很多。例如gets(),sprintf(),strcpy(),strcat(),fscanf(),scanf(),vsprintf()等。可以開發出更安全的封裝了若干己知易受堆棧溢出攻擊的岸函數。

    • 使堆棧向高地址方向增長。使用的機器堆棧壓入數據時向高地址方向前進,那么無論緩沖區如何溢出,都不可能覆蓋低地址處的函數返回地址指針,也就避免了緩沖區溢出攻擊。但是這種方法仍然無法防范利用堆和靜態數據段的緩沖區進行溢出的攻擊。

    • 在程序指針失效前進行完整性檢查。原理是在每次在程序指針被引用之前先檢測該指針是否己被惡意改動過,如果發現被改動,程序就拒絕執行。

    • 利用編譯器將靜態數據段中的函數地址指針存放地址和其他數據的存放地址分離。

    回答所涉及的環境:聯想天逸510S、Windows 10。

    3個月前 / 評論
    亚洲 欧美 自拍 唯美 另类