mysql注入技巧原理 Mysql注入小技巧

2021-10-18 22:40:00 字數 4318 閱讀 8510

一、字串擷取函式

平時我們進行盲注時用substr()函式擷取字串,當substr()被過濾時,怎麼辦呢?

我們可以用這些函式可以達到同樣的效果1.left(str, length)

從左邊第length位開始擷取字串

用法:left(str, length),即:left(被擷取字串, 擷取長度)

結果為:www.baid2.right(str,length)

從右邊第length位開始擷取字串

用法:right(str, length),即:left(被擷取字串, 擷取長度)

結果為:aidu.com3.substring(str,index,len)

擷取特定長度的字串

用法:substring(str, pos),即:substring(被擷取字串, 從第幾位開始擷取)

substring(str, pos, length),即:

substring(被擷取字串,從第幾位開始擷取,擷取長度)

(1).從字串的第8個字元開始讀取直至結束

結果為:du.com

(2).從字串的第8個字元開始,只取3個字元

結果為:du.4.mid(str,start,length)

擷取str 從start開始,擷取length的長度

mid()的用法等同於substr()這裡就不多贅述了5.substring_index(str, delim, count)

按關鍵字進行讀取

用法:substring_index(str, delim, count),即:substring_index(被擷取字串,關鍵字,關鍵字出現的次數)(1).擷取第二個「.」之前的所有字元

結果:www.baidu

[size=1em](2).擷取倒數第二個「.」之後的所有字元

結果:baidu.com

[size=1em](3).如果關鍵字不存在,則返回整個字串

substring_index()可以在布林盲注時使用,先隨便擷取乙個不可能的值。

那麼頁面肯定返回正常,如:

and substring_index(database(),'qwasda',1)=database()'6.locate(substr,str)

返回字串的位置

用法1:

locate(substr,str)返回字串substr中第一次出現str的位置

例:返回字串「d」自一次出現的位置

結果:8

用法2:

locate(substr,str,pos)返回substr 在字串str,從pos處開始的第一次出現的位置

例:從字串」pan.baidu.com」的第三位開始計算,返回字元「a」第一次出現的位置

結果:6

locate()還可以判斷字串長度

2020-10-9 14:40 上傳7.instr (substr,str)

返回字串的位置等同於locate(),但語法相反

用法:instr(substr,str)返回字串substr中第一次出現str的位置

例:返回字串「d」自一次出現的位置

結果:88.position (substr in str)

position (substr in str)的效果與instr(),locate()相同,但語法不同

用法:position(substr in str) 返回字串substr中第一次出現str的位置與locate(substr,str)的結果相同

例:返回字串「d」自一次出現的位置

結果:89.strcmp()

若所有的字串均相同,則返回strcmp(),

若根據當前分類次序,第乙個引數小於第二個,則返回-1,其它情況返回1

用法:mysql> select strcmp(12345,123456);

->-1

mysql> select strcmp(1234567,123456);

->1

mysql> select strcmp(123456,123456);

->0二、替代邏輯運算子

我們在注入時,用的最多的是什麼?

在測試是否有注入點時,經常會用到and 1=1,

如果and、等於號」=」等這些邏輯運算子被過濾無法使用時,

我們是不是就此放棄了,這時候我們可以用一些特殊的符號替代1.替代and

當and被過濾時,可以用」&&」替代

index.php?id = 1 and 1=1等同於index.php?id = 1 && 1=12.替代or

當or被過濾時,可以用」||」替代

index.php?id = 1.1 or 1=1等同於index.php?id = 1.1 || 1=13.替代異或運算子」^」

當異或運算子」^」被過濾時,可以用」xor」替代

select 1=1 xor 1=1等同於select 1=1 ^ 1=14.替代等於號」=」

等於號」=」被過濾時,可以用多種方法替代

(1)between://在什麼與什麼之間

select database() between 0x61 and 0x7a;

(2)in:// mysql中in常用於where表示式中,其作用是查詢某個範圍內的資料

select * from user where uid in (2,3,5)

(3)like //模糊查詢,也可以當等於號用

index.php?id = 1.1 or 1 like 1等同於index.php?id = 1.1 or1 like 1

(4)使用正則代替等於號

select 『hern』 regexp 『[0-9]』;

rlike === regexp

regexp等同於rlike5.替代逗號」,」

union select 1,2,3 => union select * from (select 1)a join (select 2)b join (select 3)c;6.替代空格

%20 %09 %0a %0b %0c %0d %a0 /**/ tab/

%a0 這個不會被php的\s進行匹配

/*!/ 內斂注釋

# 這個也可以用來做分隔 挺有意思7.替代null

\n => null

select *from duomi_admin where id=\n三、一些小技巧1.替代sleep()

benchmark(100000,sha1(『1』)), 1

benchmark函式是指執行某函式的次數,次數多時能夠達到與sleep函式相同的效果2.函式名和括號之間可以加入特殊字元

concat/**/()

version()3.花式報錯注入

floor()

updatexml() 以上才能使用

extractvalue() 以上才能使用

exp() 後可以用

name_const

geometrycollection(),multipoint(),polygon(),multipolygon(),linestring(),multilinestring() 幾何函式報錯

2020-10-9 14:39 上傳4.替代ascii

hex()

bin()

ord()

sql注入 mysql Sql注入之Mysql

sql注入之mysql mysql函式 system user 系統使用者名稱 user 使用者名稱 current user 當前使用者名稱 session user 連線資料庫的使用者名稱 database 資料庫名 version 資料庫版本 load file 讀取本地檔案函式 datadi...

mysql注入原理及防範

sql注入原理 sql注入漏洞存在的原因,就是拼接sql引數 例 引數為id sql select from test where id get id 正常輸入2 則sql為 select from test where id 2 只會查出id為2的記錄 黑客輸入2 or 1 1 則sql為sele...

mysql資料庫sql注入原理 SQL注入原理

結構化查詢語句 structured query language,縮寫 sql 是一種特殊的程式語言,用於資料庫中的標準資料查詢語言。sql注入 sql injection 是一種常見的web安全漏洞,攻擊者利用這個問題,可以訪問或者修改資料,或者利用潛在的資料庫漏洞進行攻擊。什麼是sql注入?s...