nop sled 空操作雪橇


nop sled 是一種可以破解棧隨機化的緩沖區溢出攻擊方式。

攻擊者通過輸入字符串注入攻擊代碼。在實際的攻擊代碼前注入很長的  nop  指令 (無操作,僅使程序計數器加一)序列,

只要程序的控制流指向該序列任意一處,程序計數器逐步加一,直到到達攻擊代碼的存在的地址,並執行。

 

 

棧隨機化指運行時棧的起始地址為隨機的,所以程序中存放   各函數返回地址   的地址也會發生對應的改變。可防止運行相同

程序的相同系統因易預測棧地址而易於攻擊。

 

 

由於棧地址在一定范圍的隨機性,攻擊者不能夠知道攻擊代碼注入的地址,而要執行攻擊代碼需要將函數的返回地址更改為攻擊代碼的地址(可通過緩沖區溢出的方式改寫函數返回地址)。所以,只能在一定范圍內(棧隨機導致攻擊代碼地址一定范圍內隨機)枚舉攻擊代碼位置(有依據的猜)

       若   :

             棧隨機范圍為 2 ^ 23  ,則需要枚舉 2 ^23 個 返回地址。

而使用 nop sled  的方式  ,若  枚舉 一個  255 字節的 nop sled ,則只需要枚舉 (2 ^ 23) / (255+1)  個返回地址即可。(攻擊代碼本身有一個起始地址。所以為 255+1)

 

  即 :    

  不用 nop sled  ,   函數返回地址 ------->  攻擊代碼。

  使用 nop sled ,    函數返回地址 ------->  nop 序列(順序執行) 直到攻擊代碼地址。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM