Sql注入
一、形成原因
開發者對SQL語言篩查不嚴,導緻惡意的sql語句被執行,獲得資料庫資訊。
二、分類:
1.(1)數字型注入:id=1 and 1=1;
(2)字元型注入:id=1’ and ‘1=1
2.(1)二次注入:先寫入注入語句,再調用
(2)基于時間的注入:sleep,if等函數
(3)基于報錯的注入:強行回顯,floor
(4)基于布爾的注入:看頁面的反應時間判斷
(5)堆疊注入
(6)寬位元組注入
(7)load_file,out_file,寫入檔案,擷取檔案
3.資料庫分類:mysql,mssql,Oracle,mangodb,(mysal5.0以上版本自帶information_schema,可直接利用。)
4.送出方式:get,post,cookie,
5.查詢語句:inset,select,delete,update。
如果有時候沒有回顯可能是因為查詢語句出問題。
三、Sql注入步驟:
資訊收集
(1) 判斷是否存在SQL注入
(2) 判斷資料庫類型,版本,使用者等資訊
注入
(3) Order by
(4) 暴庫名(and 1=2 union select from )
(5) 暴表名
(6) 暴字段
(7) 暴資訊
提權
四、繞waf:
大小寫、嵌套 Aandnd、注釋、改變送出方式,http參數污染、sqlmap 的tamper、編譯
五、防禦:
預編譯,魔術引号,黑白名單,waf,權限限制,敏感詞過濾,規定查詢資料長度