緩衝區溢位攻擊


當程式試圖在臨時資料儲存區域(緩衝區)中儲存比預期要容納的更多資料時,會出現緩衝區溢位。由於建立緩衝區以包含有限數量的資料,因此額外資訊可能溢位到相鄰緩衝區中,從而破壞其中儲存的有效資料。

範例

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

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

動手實踐

第1步 - 我們需要使用姓名和房間號登入才能存取網際網路。如下所示 -

第2步 - 我們還將在Burp Suite中啟用「Unhide hidden form fields」,如下所示 -

第3步 - 現在在名稱和房間號欄位中傳送輸入。還嘗試在房間號碼欄位中注入一個相當大的數位。

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

第5步 - 攻擊成功,使得由於緩衝區溢位,它開始讀取相鄰的儲存器位置並顯示給使用者,如下所示。

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

預防機制

  • 程式碼審查
  • 開發者培訓
  • 編譯工具
  • 開發安全功能
  • 定期掃描