當程式試圖在臨時數據存儲區域(緩衝區)中存儲比預期要容納的更多數據時,會出現緩衝區溢出。由於創建緩衝區以包含有限數量的數據,因此額外資訊可能溢出到相鄰緩衝區中,從而破壞其中保存的有效數據。
示例
這是緩衝區溢出的經典示例。它演示了一個簡單的緩衝區溢出,它是由第一個依賴外部數據來控制其行為的場景引起的。無法限制用戶輸入的數據量,程式的行為取決於用戶放入的字元數。
...
char bufr[BUFSIZE];
gets(bufr);
...
動手實踐
第1步 - 我們需要使用姓名和房間號登錄才能訪問互聯網。如下所示 -
第2步 - 我們還將在Burp Suite中啟用“Unhide hidden form fields”,如下所示 -
第3步 - 現在在名稱和房間號字段中發送輸入。還嘗試在房間號碼字段中注入一個相當大的數字。
第4步 - 隱藏字段顯示如下。我們點擊接受條款 -
第5步 - 攻擊成功,使得由於緩衝區溢出,它開始讀取相鄰的記憶體位置並顯示給用戶,如下所示。
第6步 - 現在我們使用顯示的數據登錄。登錄後,將顯示以下消息 -
預防機制
- 代碼審查
- 開發者培訓
- 編譯工具
- 開發安全功能
- 定期掃描
上一篇:
Web Service安全
下一篇:
拒絕服務攻擊