iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 24
1

What's Pwn

要正式進入 Pwn 之前,我們應該要先了解 Pwn 是什麼。在分析程式行為時,透過觀察組語或 Pseudo Code,找出漏洞及弱點,達到控制程式流程,目的在於取得程式的控制權,拿到 Remote Server Shell,又稱為 Binary Exploitation。

這裡簡單來說,假設一般程式,具有輸入功能,並且會依照輸入經過演算法等處理後輸出,如下圖。

https://ithelp.ithome.com.tw/upload/images/20191010/201150608MWJmHd1wH.png

但若程式未設想使用者可能輸入,並且尚未做限制,當使用者輸入特定的字元、特殊符號時,可能造成程式崩壞,危害可能造成:

  1. 改變程式的執行流程
  2. 改變程式的執行結果

所以僅要有可以輸入,遞送參數的程式、服務,就可能造成 Pwn 的危害,一般而言,駭客們都會用 Pwn 來取得系統權限,並建立後門取得 Shell。

ELF(Executable and Linkable Format)

Linux 的執行檔格式 ,就如同 Windows 與 PE(Portable Executable) 一樣。順帶一提,ELF 和 PE 都是 COFF(Common file format)格式的變種。

這裡簡單認識一下 ELF 的結構:

  • Text 段(Code 段)
    • 存放 Binary Code
    • 可讀 不可寫 可執行
  • Data 段
    • 已初始化的全域變數
  • BSS 段(與 Data 段合稱 Data 段)
    • 未初始化的全域變數
  • Heap 段
    • 動態記憶體空間
    • malloc() / free()
    • Low Address To High Address
  • Stack 段
    • 存放暫存資料
      • 區域變數
      • ReturnAddress
      • 參數
      • 回傳值
    • High Address To Low Address
    • stack top 存在 rsp
      https://ithelp.ithome.com.tw/upload/images/20191010/201150601gQBCWFxYy.png

漂亮的圖~


上一篇
『 Day 23』密碼卷宗 現代篇 非對稱章 - RSA
下一篇
『 Day 25』拜託別 Pwn 我啦! - Register & Assembly
系列文
到處挖坑,現在該來還(填)願(坑)ㄌ !!!30

尚未有邦友留言

立即登入留言