首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 注入攻擊大全與防禦 (三):目錄遍歷、檔案操作與實戰防禦技巧

     編輯:關於SqlServer

四、其他系統資訊獲取技巧 (需 xp_cmdshell/擴展預存程序啟用)

1. 遍歷目錄

EXEC master.dbo.xp_dirtree 'c:\'

xp_dirtree 執行結果

2. 取得子目錄

EXEC master.dbo.xp_subdirs 'c:\'

xp_subdirs 執行結果

3. 列舉可用磁碟分割

EXEC master.dbo.xp_availablemedia

xp_availablemedia 執行結果

4. 判斷檔案/目錄是否存在

EXEC master..xp_fileexist 'c:\boot.ini'

xp_fileexist 執行結果

五、防禦 SQL 注入的實務妙招

策略 1:修改資料表結構增加攻擊成本

  • 管理員帳號欄位型別由文字型改為 VARCHAR(255) (或備註型)。
  • 密碼欄位同理調整。

策略 2:植入高熵值干擾資料

  • 將真正管理員帳號置於 ID=1,密碼填入超過 100 個中文字元 (極長雜湊)。

策略 3:真實憑證藏於非首筆

  • 真實管理員密碼放在 ID=2 或之後的任意列。

策略 4:前端登入頁面長度限制 (關鍵)

  • 登入表單前端/後端同時限制帳號密碼最大長度 (如 20 字元)。
  • 攻擊者即使竊取 ID=1 的超長憑證,也無法通過長度驗證;真實管理員使用正常長度密碼不受影響。

總結

資料庫層面的混淆 (長度、位置) 配合應用層嚴格輸入驗證,可大幅提高攻擊者成本。但根本防禦仍在參數化查詢、最小權限、停用危險擴展預存程序 (xp_cmdshell 等)、WAF 規則、定期代碼審計。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved