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

2021-10-17 20:27:30 字數 2707 閱讀 5333

一、寬位元組注入

1、什麼是寬位元組

gb2312、gbk、gb18030、big5等這些都是常說的寬位元組,實際為兩位元組

2、寬位元組注入原理

防禦:將 ' 轉換為 \'

繞過:將 \ 消滅

mysql在使用gbk編碼的時候,會認為兩個字元為乙個漢字

\ 編碼為 %5c

' 編碼為%27

%df%5c mysql會認為是乙個漢字

構造:%df' %df\' %df%5c%27 其中%df%5c將成為乙個漢字專為 漢字' 從而繞過了/的轉義

注:前乙個ascii碼大於128才能到漢字的範圍

注入方法:在注入點後鍵入%df,然後按照正常的注入流程開始注入

工具注入方法:

在注入點後面手動新增%df即可 (沒成功。。。)

白盒測試:

1、檢視mysql編碼是否為gbk

2、是否使用preg_replace把單引號替換成 \'

3、是否使用addslashes進行轉義

4、是否使用mysql_real_escape_string進行轉義

寬位元組防禦

1、使用utf-8,避免寬位元組

不僅gbk、韓文、日文等等都是寬位元組,都有可能存在諸如漏洞

2、mysql_real_escape_string, mysql_set_charset('gbk',$conn);

3、可以設定引數, character_set_client=binary

二、二次編碼注入

在url中可能出現一些特殊字元,如= & ; +

為了避免衝突,需要轉移

index.php?id=1&name=admin&pwd=123

mysql會對url提交的編碼進行自動轉換

例如:url中的%3d,mysql會自動轉為=

寬位元組和二次編碼注入:

是在面對php**或配置,對輸入的'(單引號)進行轉義的時候,在處理使用者輸入資料時存在問題,可以繞過轉義

二次編碼注入是由於兩次編碼轉義衝突導致出現的注入點

注入方法:在注入點後鍵入%2527,然後按照正常的注入流程開始注入

白盒測試

1、是否使用urldecode函式

2、urldecode函式是否在轉義方法之後

三、二次注入

第一步, 插入惡意資料

保留了原來的資料,插入到資料庫

第二步,引用惡意資料

在將資料存入到了資料庫中之後,開發者未經驗證,直接引用

例如修改密碼

輸入admin'#

在修改密碼過程中,將會修改admin的密碼

select concat_ws(0x7e,username,password) from security

四、waf繞過原理分析

sql注入是***測試與waf防禦最激烈的戰場

1、白盒繞過

1)大小寫變形

2)等價替換:and -> &&, or -> ||

3)。。。

2、黑盒繞過

一、架構層繞過

1) 尋找源站

2)利用同網段

3)利用邊界漏洞

二、資源限制角度繞過

1、post大body

三、協議層面繞過waf的檢測

1、協議未覆蓋繞過waf

*請求方式變換 get -> post

*content-type變換

2、引數汙染

index.php?id=1&id=2

id=1

id=2

waf可能只檢測id=1

四、規則層面的繞過

1、sql注釋符繞過

level-1 union/**/select

level-2 union/*ajlsjdlf*/select

2 空白符繞過

mysql空白符:%09,%0a。。。

正則空白符: %09,%0a

example-1:union%250cselect

3函式分分割符號

在函式和資料中間引入一些內容

concat%2520(

concat/**/(

concat%250c(

4 浮點數詞法解析

select * from users where id=8e0union select 1,2,3,4

5 利用error-based進行sql注入:error-based sql注入函式非常容易被忽略

extractvalue(1, concat(0x5c,md5(3)));

updatexml(1,concat(0x5d,md5(3)),1);

6 mysql特殊語法

selectfrom;

五、fuzz繞過waf

1、注釋符繞過

*先測試最基本的: union/**/select

*再測試中間引入特殊字:union/*aaaa%01bbs*/select

*最後測試注釋長度:union/*aaaaaaaaaaaaaaaa*/select

最基本的模式

union/*something*/select

將空格替換為/*sldfj$%^&*/

特殊函式 xx() 替換為 xx/*sldfj$%^&*/()

六、sqlmap waf繞過指令碼編寫

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

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

mysql 注釋 繞過 sql注入繞過方法

一 注釋符號繞過 在sql中常用的注釋符號有 二 大小寫繞過 當web正則過濾的時候對大小寫不敏感的情況下使用,一般很少會有這種漏洞 比如當過濾了select的時候我們可以採用select來查詢 三 內聯注釋繞過 把要使用的查詢語句放在 中,這樣在一般的資料庫是不會執行的,但是在mysql中內聯注釋...

mysql 注釋 繞過 SQL注入繞過技巧

1.繞過空格 注釋符 a0 兩個空格代替乙個空格,用tab代替空格,a0 空格 20 09 0a 0b 0c 0d a0 00 最基本的繞過方法,用注釋替換空格 注釋 使用浮點數 select from users where id 8e0union select 1,2,3 select from...