學習sql注入已經有段時間了,大部分仍是mysql的注入。今天作個總結,最近的學習中記錄的一些知識也能夠幫助一些和我同樣的小白。php
首先針對各類注入方法和類型,理解起來很繁瑣,容易混亂,下面是個人記憶框架,不是很全面,歡迎大佬指出。mysql
注入類型:sql
(下方爲舉例,,實際上任何咱們可控,過濾不嚴且帶入數據庫執行)數據庫
?id=1' 字符型 主要有單引號閉合,雙引號閉合,取決與後臺語句的書寫方法cookie
?id=1 數字型號 大部分不用加閉合,後臺是修改語句,而且id在最後一位的個別時可能要閉合一下括號 框架
注入位置:函數
http頭注入 在http頭的的注入點,常出如今UA,referer,cookiepost
二次注入 特殊字符被過濾後失去做用但保留下來存儲到數據庫裏,再次被調用時未通過過濾使用學習
post注入 表單提交後帶入數據庫時沒有通過過濾編碼
注入方式:
聯合注入 聯合查詢注入
報錯注入 利用extractvalue,updatexml等語句
布爾型盲注 利用length,substr,ascii進行注入
時間注入 利用if,sleep搭配布爾注入執行,在頁面無錯誤顯示,但確實存在注入點時使用
堆疊注入 限制比較多mysql支持,可是須要php函數支持
基礎繞過類型:
二次編碼注入 後臺代碼錯誤的對參數進行了二次url解碼時,過濾在第一次時使用致使過濾不徹底並在第二次解碼時產生的漏洞
base64編碼 後臺先過濾再解碼產生漏洞
寬字節注入 數據庫爲gbk編碼,利用gbk漢字編碼繞過轉義符號
相互組合使用,也可能單個出現,以上不是所有但大致的記憶方式是同樣的。
waf基礎繞過:
/*!*/ 內聯註釋
/**/註釋代替空格
--+dddddd%0a 參數污染,註釋後換行
&& 代替and
|| 代替or
以上就是對mysql注入的學習總結,越學習愈加以爲閉合纔是最關鍵的地方,多是由於我太菜了吧;