SQL注入的測試方法
阿新 • • 發佈:2019-01-04
簡介
Web應用程式的資料儲存與讀取通過資料庫完成,而這些讀寫的操作通過SQL語句實現。實際專案中可能因為開發人員的疏忽或經驗問題,未對使用者可輸入的引數進行嚴格地校驗,導致使用者可能惡意地將SQL命令帶入資料庫執行,實現注入的目的。
SQL注入的條件
- 引數中含有SQL語句,並可以帶入資料庫正常執行
- Web應用程式和資料庫的互動中,必須有引數加入請求傳遞至資料庫
SQL注入的方法
1. 搜尋型引數
判斷是否存在SQL注入漏洞,需滿足以下四步:
http://127.0.0.1/sql.php?Parameter=James #正常查詢資料
http://127.0.0.1/sql .php?Parameter=James' #頁面異常或查詢資料為空
http://127.0.0.1/sql.php?Parameter=James%'and'%'=' #正常查詢資料
http://127.0.0.1/sql.php?Parameter=James%'and'a%'='b #查詢資料為空或提示列表為空
2.數字型引數
判斷是否存在SQL注入漏洞,需滿足一下四步:
http://127.0.0.1/sql.php?Parameter=10001 #正常查詢資料
http://127.0.0.1/sql.php?Parameter=10001' #頁面異常或查詢資料為空
http://127.0.0.1 /sql.php?Parameter=10001 and 1=1 #正常查詢資料
http://127.0.0.1/sql.php?Parameter=10001 and 1=2 #查詢資料為空或提示列表為空
3.字元型引數
判斷是否存在SQL注入漏洞,需滿足一下四步:
http://127.0.0.1/sql.php?Parameter=James #正常查詢資料
http://127.0.0.1/sql.php?Parameter=James' #頁面異常或查詢資料為空
http://127.0.0.1/sql.php?Parameter=James' and '1'='1 #正常查詢資料
http://127.0.0.1/sql.php?Parameter=James' and '1'='2 #查詢資料為空或提示列表為空
後續
此外,一些注入的方法是通過Java+JDBC程式碼注入(Statement介面改為PreparedStatement介面預防)、MyBatis框架注入(Mapper XML檔案’$”拼接改為’#”拼接預防)等實現,因此對於一些對外的Web程式,SQL注入的檢查是必須的,否則通過SQL注入的漏洞,外部使用者可能獲取/修改資料或直接獲得管理員許可權,這對生產環境來說都是致命的。