Sql注入截取字符串常用函數


 

     在sql注入中,往往會用到截取字符串的問題,例如不回顯的情況下進行的注入,也成為盲注,這種情況下往往需要一個一個字符的去猜解,過程中需要用到截取字符串。本文中主要列舉三個函數和該函數注入過程中的一些用例。Ps;此處用mysql進行說明,其他類型數據庫請自行檢測。

 

三大法寶:mid(),substr(),left()

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

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM