本章示範的漏洞利用技術已存在多年。程式設計師想出一些聰明的防護方法只是時間問題——這些是防護型(protect)對策,試圖保護弱點本身。

漏洞利用的三步驟#

一個漏洞利用可以概括成三個步驟:

  1. 某種記憶體毀損(memory corruption)
  2. 控制流程的改變(change in control flow)
  3. shellcode 的執行(execution of shellcode)

強化型對策各自針對其中一或多個步驟下手——接下來兩節的「不可執行堆疊」瞄準第三步,「隨機化堆疊空間」則瞄準第二步。