1. 程式人生 > 其它 >20212907 2021-2022-2 《網路攻防實踐》實踐九報告

20212907 2021-2022-2 《網路攻防實踐》實踐九報告

一、實踐內容

(1)彙編指令定義
彙編指令是組合語言中使用的一些操作符和助記符,還包括一些偽指令(如assume,end),彙編指令同機器指令一一對應。每一種CPU都有自己的彙編指令集。計算機是通過執行指令來處理資料的,為了指出資料的來源、操作結果的去向及所執行的操作,一條指令一般包含操作碼和運算元兩部分。
(2)緩衝區溢位
緩衝區溢位是一種非常普遍、非常危險的漏洞,在各種作業系統、應用軟體中廣泛存在。利用緩衝區溢位攻擊,可以導致程式執行失敗、系統宕機、重新啟動等後果。更為嚴重的是,可以利用它執行非授權指令,甚至可以取得系統特權,進而進行各種非法操作。緩衝區溢位(buffer overflow),是針對程式設計缺陷,向程式輸入緩衝區寫入使之溢位的內容(通常是超過緩衝區能儲存的最大資料量的資料),從而破壞程式執行、趁著中斷之際並獲取程式乃至系統的控制權。緩衝區就是作業系統為函式執行專門劃分出的一段記憶體,包括棧(自動變數)、堆(動態記憶體)和靜態資料區(全域性或靜態)。其中緩衝區溢位發生在棧裡,棧存放了函式的引數、返回地址、EBP(EBP是當前函式的存取指標,即儲存或者讀取數時的指標基地址,可以看成一個標準的函式起始程式碼)和區域性變數。結構如下:

當函式中對區域性變數的賦值超過了為其分配的儲存空間,超出的部分就會覆蓋棧裡其他部分的資料,也就是發生了緩衝區溢位。如下圖所示:

如果緩衝區溢位只是導致程式執行出錯,那麼看起來危害還不是那麼大。但如果溢位到返回地址的資料是另一段函式或程式碼的入口地址,那麼這段函式或程式碼就會被執行,這就是緩衝區溢位漏洞真正的危害所在。如下圖。

通過構造溢位資料,將棧裡的函式引數修改成要執行的程式程式碼(如shell),返回地址修改為系統特殊的指令jmpesp的地址,而jmpesp就是跳轉到棧暫存器。被攻擊程式執行後,首先將執行jmpesp命令,而jmpesp命令會使程式跳轉回esp所在位置,而這時esp位置就是函式引數位置(具體原因請參閱堆疊及暫存器相關知識),而函式引數已經被shell程式碼所覆蓋,這樣shell就被執行了。如下圖:

(3) 緩衝區溢位危害
當計算機向緩衝區填充資料時超出了緩衝區本身的容量,溢位的資料覆蓋在合法資料上。

  • 危害有以下兩點:
    1、程式崩潰,導致拒絕服務
    2、跳轉並且執行一段惡意程式碼
    原因:造成緩衝區溢位的主要原因是程式中沒有仔細檢查使用者輸入。
所謂緩衝區可以更抽象地理解為一段可讀寫的記憶體區域,緩衝區攻擊的最終目的就是希望系統能執行這塊可讀寫記憶體中已經被蓄意設定好的惡意程式碼。按照馮·諾依曼儲存程式原理,程式程式碼是作為二進位制資料儲存在記憶體的,同樣程式的資料也在記憶體中,因此直接從記憶體的二進位制形式上是無法區分哪些是資料哪些是程式碼的,這也為緩衝區溢位攻擊提供了可能。
當然,隨便往緩衝區中填東西造成它溢位一般只會出現分段錯誤(Segmentation fault),而不能達到攻擊的目的。最常見的手段是通過製造緩衝區溢位使程式執行一個使用者shell,再通過shell執行其它命令。如果該程式屬於root且有suid許可權的話,攻擊者就獲得了一個有root許可權的shell,可以對系統進行任意操作了。

(參考:https://blog.csdn.net/qq_35642036/article/details/82809845
https://baijiahao.baidu.com/s?id=1668767940652851301&wfr=spider&for=pc)

二、實踐過程

實踐任務:
本次實踐的物件是一個名為pwn1的linux可執行檔案。
該程式正常執行流程是:main呼叫foo函式,foo函式會簡單回顯任何使用者輸入的字串。
該程式同時包含另一個程式碼片段,getShell,會返回一個可用Shell。正常情況下這個程式碼是不會被執行的。我們實踐的目標就是想辦法執行這個程式碼片段。我們將學習兩種方法執行這個程式碼片段,然後學習如何注入執行任何Shellcode。

三個實踐內容如下:
(1)手工修改可執行檔案,改變程式執行流程,直接跳轉到getShell函式。
(2)利用foo函式的Bof漏洞,構造一個攻擊輸入字串,覆蓋返回地址,觸發getShell函式。
(3)注入一個自己製作的shellcode並執行這段shellcode。

三、學習中遇到的問題及解決

  • 問題1:對於組合語言指令和緩衝區溢位的相關原理不清楚,在操作過程中經常輸入錯誤。

  • 問題1解決方案:查詢相關資料,請教同學後才完成了實驗。

  • 問題2:

  • 問題2解決方案:

四、實踐總結