安全測試 - 緩衝區溢位



當程式試圖將超過其設計容量的資料儲存到臨時資料儲存區(緩衝區)中時,就會發生緩衝區溢位。由於緩衝區被建立為容納有限數量的資料,因此額外資訊可能會溢位到相鄰的緩衝區,從而破壞其中儲存的有效資料。

示例

這是一個經典的緩衝區溢位示例。它演示了一個簡單的緩衝區溢位,該溢位是由第一種情況引起的,該情況依賴於外部資料來控制其行為。無法限制使用者輸入的資料量,程式的行為取決於使用者輸入的字元數量。

   ...
   char bufr[BUFSIZE]; 
   gets(bufr);
   ...

動手操作

步驟1 - 我們需要使用使用者名稱和房間號登入才能訪問網際網路。以下是場景快照。

buffer_overflow

步驟2 - 我們還將在Burp Suite中啟用“顯示隱藏表單欄位”,如下所示:

buffer_overflow1

步驟3 - 現在我們在使用者名稱和房間號欄位中輸入。我們還嘗試在房間號欄位中注入一個很大的數字。

buffer_overflow2

步驟4 - 隱藏欄位顯示如下。我們點選接受條款。

buffer_overflow3

步驟5 - 攻擊成功,由於緩衝區溢位,它開始讀取相鄰的記憶體位置並顯示給使用者,如下所示:

buffer_overflow4

步驟6 - 現在讓我們使用顯示的資料登入。登入後,顯示以下訊息:

buffer_overflow4

預防機制

  • 程式碼審查
  • 開發者培訓
  • 編譯器工具
  • 開發安全函式
  • 定期掃描
廣告