緩衝區溢出攻擊

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

示例

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

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

動手實踐

第1步 - 我們需要使用姓名和房間號登錄才能訪問互聯網。如下所示 -

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

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

第4步 - 隱藏字段顯示如下。我們點擊接受條款 -

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

第6步 - 現在我們使用顯示的數據登錄。登錄後,將顯示以下消息 -

預防機制

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

上一篇: Web Service安全 下一篇: 拒絕服務攻擊