簡介
所謂sql注入,就是通過把sql命令插入web表單提交或者輸入域名頁面請求的查詢字符串虚青,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意的sql命令
原理
針對SQL注入的攻擊行為可描述為通過用戶可控制參數(shù)中注入sql語法框全,破壞原有的sql結(jié)構(gòu)哑诊,達(dá)到編寫程序時意料之外結(jié)果的攻擊行為扛点。
其成因可以歸結(jié)為一下兩個原因疊加造成的:
1、程序編寫者在處理程序和數(shù)據(jù)庫交互時续镇,使用字符串拼接的方式構(gòu)造sql語句
2美澳、未對用戶可控參數(shù)進(jìn)行足夠的過濾便將參數(shù)內(nèi)容拼接進(jìn)入到sql語句中。
注入危害
攻擊者利用sql注入漏洞磨取,可以獲取數(shù)據(jù)庫中的多種信息(例如:管理員后臺密碼)人柿,從而脫取數(shù)據(jù)庫中內(nèi)容(脫庫)。在特別情況下忙厌,還可以修改數(shù)據(jù)庫內(nèi)容或者插入內(nèi)容到達(dá)數(shù)據(jù)庫凫岖,如果數(shù)據(jù)庫權(quán)限分配存在問題,或者數(shù)據(jù)庫本身存在缺陷逢净,那么攻擊者可以通過sql注入漏洞直接獲得wbeshell或者服務(wù)器的系統(tǒng)權(quán)限哥放。
注入分類
1歼指、根據(jù)數(shù)據(jù)類型:
●?數(shù)字型注入
●字符型注入
區(qū)別:
字符型:需要單引號閉合的就是字符型注入,并且需要注釋調(diào)后面的單引號(注釋符號:#,--,/*)
數(shù)字型:不需要單引號閉合甥雕,也不需要注釋符號
2踩身、根據(jù)注入語法:
● UNION query SQL injection(可聯(lián)合查詢注入)
●Stacked queries SQL injection (可多語句查詢注入)
●Error-based blind SQL injection (布爾型注入)
● Error-based SQL injection(報錯型注入)
●Time-based blind SQL injection (基于時間延遲注入)
SQL注入挖掘
● and 1=1 和 and 1=2 回顯頁面不同(整形判斷)
● 單引號判斷 ' 顯示數(shù)據(jù)庫錯誤信息或者頁面回顯不同(整形,字符串類型判斷)
● \ (轉(zhuǎn)義符)
● -1/+1 回顯下一個或上一個頁面(整形判斷)(需要用%2b轉(zhuǎn)碼+號)
● and sleep(5)(判斷頁面返回時間)
MySQL中常用函數(shù)
● system_user()? 系統(tǒng)用戶名
● user()? 數(shù)據(jù)庫的用戶名
● current_user()? 當(dāng)前數(shù)據(jù)庫用戶名
● session_user()? 連接數(shù)據(jù)庫的用戶下
● database() 數(shù)據(jù)庫名
● version() 數(shù)據(jù)庫版本
● @@basedir 查看安裝路徑
● load_file('/etc/passwd')? 讀取本地文件的函數(shù)
MySQL中information_scheme庫
●? schemata 表 字段:schema_name (數(shù)據(jù)庫名字)
● tables 表 字段:table_schema,table_name
● columns 表 字段:table_schema,table_name,column_name