逆向之利用地址覆蓋執行Shellcode

逆向之利用地址覆蓋執行Shellcode

Shellcode

  • Shellcode定義

  Shellcode實際是一段代碼(也可以是填充數據),是用來發送到服務器利用特定漏洞的代碼一般可以獲取權限。

  • Shellcode的作用

  Shellcode一般是作爲數據發送給受攻擊服務器的。Shellcode是溢出程序和蠕蟲病毒的核心提到它自然就會和漏洞聯想在一起。漏洞利用中最關鍵的是Shellcode的編寫。

由於漏洞發現者在漏洞發現之初並不會給出完整Shellcode因此掌握Shellcode編寫技術就顯得尤爲重要。

Shellcode的構造

  • 構造shellcode的作用:

  構造一段shellcode的作用就是爲了在緩衝區溢出時將shellcode的地址覆蓋掉正常的返回地址。

  • Shellcode的存放位置:

  Shellcode的通常放在緩衝區內,也可以通過環境變量存入堆內,也可以通過動態內存放入堆區。

Shellcode執行方法

跳板跳轉

  • 跳板跳轉的定義

  跳板跳轉是一種常見的讓可執行程序執行Shellcode內容的方法。

  • 跳轉過程:

  (1)用內存中任意一個”jmpesp”的地址覆蓋返回地址。
  (2)函數返回後被重定向去執行內存中jmpesp”指令。
  (3)由於函數返回後ESP指向返回地址後,"jmpesp”執行後,CPU將到棧區函數返回地址之後的地方取指令執行。
  (4)Shellcode的佈置。緩衝區前面一段用任意數據填充,把Shellcode放在函數返回地址後面。jmpesp執行完就執行Shellcode。

代碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章