sql注入--基礎

什麼是sql注入:mysql

  利用SQL語句 在外部 對數據庫進行 查詢,更新等 動做web

sql注入的原理:sql

  輸入值可控且帶入數據庫執行(前提)數據庫

  接受的變量傳值未進行過濾(實質)函數

sql注入的目的:測試

  獲取數據(網站數據庫:用戶名,密碼)網站

  文件讀寫,調用執行cmd命令spa

  拿到webshel(最終目標)字符串

sql注入的特性:cmd

  攻擊的[方法,結果] 由數據庫 類型 決定

注入點簡單判斷:  '  "  and  or  xor 

mysql數據庫最大權限root用戶:

  文件讀寫測試: load_file() , into outfile()

  數據庫用戶[帳號,密碼]存儲在 mysql.user下

注入點用戶權限決定權:

  鏈接數據庫使用的用戶

 

mid()函數

此函數爲截取字符串一部分。MID(column_name,start[,length])

參數

描述

column_name

必需。要提取字符的字段。

start

必需。規定開始位置(起始值是 1)。

length

可選。要返回的字符數。若是省略,則 MID() 函數返回剩餘文本。

Eg: str="123456"  mid(str,2,1)  結果爲2 

Sql用例:

(1)MID(DATABASE(),1,1)>’a’,查看數據庫名第一位,MID(DATABASE(),2,1)查看數據庫名第二位,依次查看各位字符。

(2)MID((SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE T table_schema=0xxxxxxx LIMIT 0,1),1,1)>’a’此處column_name參數能夠爲sql語句,可自行構造sql語句進行注入。

 

substr()函數

    Substr()和substring()函數實現的功能是同樣的,均爲截取字符串。

    string substring(string, start, length)

    string substr(string, start, length)

    參數描述同mid()函數,第一個參數爲要處理的字符串,start爲開始位置,length爲截取的長度。

Sql用例: 

(1) substr(DATABASE(),1,1)>’a’,查看數據庫名第一位,substr(DATABASE(),2,1)查看數據庫名第二位,依次查看各位字符。

(2) substr((SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE T table_schema=0xxxxxxx LIMIT 0,1),1,1)>’a’此處string參數能夠爲sql語句,可自行構造sql語句進行注入。

 

Left()函數

Left()獲得字符串左部指定個數的字符

Left ( string, n )        string爲要截取的字符串,n爲長度。

Sql用例:

(1) left(database(),1)>’a’,查看數據庫名第一位,left(database(),2)>’ab’,查看數據庫名前二位。

(2) 一樣的string能夠爲自行構造的sql語句。

同時也要介紹ORD()函數,此函數爲返回第一個字符的ASCII碼,常常與上面的函數進行組合使用。

例如ORD(MID(DATABASE(),1,1))>114 意爲檢測database()的第一位ASCII碼是否大於114,也便是‘r’

相關文章
相關標籤/搜索