概念和原因
比如在登錄輸入框內(nèi)輸入“delete from xx”,點擊提交就會刪掉xx表。
windows環(huán)境發(fā)現(xiàn)注入點
使用sqlmap工具檢測注入點是否存在
安裝python(安裝sqlmap之前)
下載地址:https://www.python.org/downloads/,選擇2.7的python版本下載。
安裝注意:
1.安裝路徑一般默認是C:\Python27,可以修改,但是請記住。
2.將“Add python.exe to Path"項勾選,勾選后安裝完成不再需要單獨添加環(huán)境變量,默認是“去勾選”的。如果忘記勾選了,可以重新安裝或者手動添加C:\Python27到環(huán)境變量(不懂可以搜素環(huán)境變量的安裝)。
3.設(shè)置python到環(huán)境變量之后,重啟系統(tǒng),查看是否生效,“Win+R”,輸入cmd,然后輸入python,出現(xiàn)python版本等信息,證明安裝python成功。
安裝sqlmap
下載地址:http://sqlmap.org/
安裝注意:
1.將下載的SQLMAP安裝包解壓到文件夾sqlmap中,并拷貝到 "C:\Python27" 目錄下;
2.“Win+R”,輸入cmd,cd到剛剛的sqlmap文件夾,輸入sqlmap.py -h,出現(xiàn)sqlmap幫助信息,證明安裝成功了
sqlmap脫褲過程
“Win+R”,輸入cmd,cd到剛剛的sqlmap文件夾,
例子一:
輸入:sqlmap.py -u http://local.plat.twyyx.com/product/detail?id=9786 --dbs
結(jié)果:爆出所有的數(shù)據(jù)庫名稱
例子二:
輸入:-u "要查的url" --tables -D "要看database"
結(jié)果:爆出要查詢數(shù)據(jù)庫的所有表
例子三:
輸入:sqlmap.py -u http://local.plat.twyyx.com/product/detail?id=9786 --password
結(jié)果:爆出所有的數(shù)據(jù)庫用戶和密碼
具體更多功能可網(wǎng)上查找,對于需要登錄的注入點,可使用cookie參數(shù)
解決方法
1.單請求過濾用戶輸入
如果知道這個輸入值是int的,可以使用類型轉(zhuǎn)化成對應(yīng)的類型
2.全局過濾用戶輸入
function isExistSqlInject($inject_value) {
$is_exist_sql_inject = false;
// 注入關(guān)鍵字
$inject_keyword = "'|and|exec|union|create|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare|xp_|or|--|+";
$inject_value = strtolower($inject_value);
$inject_keyword_arr = explode('|', $inject_keyword);
foreach($inject_keyword_arr as $inject_keyword_one) {
if (strpos($inject_keyword_one, $inject_value) >= 0) {
$is_exist_sql_inject = true;
break;
}
}
return $is_exist_sql_inject;
}
過濾值可補充,不建議使用此方法
3.使用pdo的參數(shù)綁定
一般的php框架都會使用pdo參數(shù)綁定,前提是要使用數(shù)組的方式傳參