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

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

1 人贊了文章

在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』

原文:Sql注入截取字元串常用函數 - lcamry - 博客園


推薦閱讀:

Mysql學習筆記:索引
SQL Practice - July 13,18
給elasticsearch 5.X 安裝sql插件 並修復
SQL優化器原理——查詢優化器綜述

TAG:SQL注入 | SQL | 網路安全 |