SQL注入漏洞(一)
SQL注入原理
形成原因:用戶輸入的數據被SQL解釋器執行
攻擊的目的只有一個,就是為了繞過程序限制,使用戶輸入的數據帶入數據庫中執行,利用數據庫的特殊性獲取更多的信息或更多的權限。
注入漏洞分類
- 數字型注入
- 字符型注入
1.數字型注入
當輸入的參數為整型時,如:ID,年齡,頁碼等,若存在注入漏洞,則可認為是數字型注入。
測試步驟
www.xxxxx.com/test.php?ID=2 '
測試頁面是否出現異常www.xxxxx.com/test.php?ID=2 and 1=1
測試頁面是否和原始數據一樣www.xxxxx.com/test.php?ID=2 and 1=2
返回數據始終為假
以上三個數據均為滿足,則可能存在SQL注入。 這種數字型注入最多出現在ASP,PHP等弱類型中。
字符型注入
當輸入的參數為字符串時,稱為字符型。數字型與字符型最大的區別在於:數字型不需要單引號閉合,而字符串一般要使用單引號來閉合。
- 數字型例句
select *from table where id=1
- 字符型例句
select *from table where uername='admin'
字符型注入最關鍵的是如何閉合SQL語句以及注釋多余的代碼
數據庫不同,字符串連接也不一樣。
- SQL Server 連接符為"+"
- Oracle 連接符為"||"
- Mysql 了連接符為空格
一些常見的注入
- POST 注入:注入字段在 POST數據中
- Cookie注入:注入字段在Cookie中
- 延時注入:使用數據庫延時特性注入
- 搜索注入:注入處為搜索的地點
- base64注入:注入字符需要經過base64加密
需要熟悉常見的數據庫函數的用法