sql注入時,空格的使用是非常普遍的。比如,我們使用union來取得目標資料:
and 0 union select null,null,null
上面的語句,在and兩側、union兩側、select的兩側,都需要空格。
1. 注釋繞過空格
這是最基本的方法,在一些自動化sql注射工具中,使用也十分普遍。在mysql中,用
/*注釋*/
來標記注釋的內容。比如sql查詢:
select user() from dual
我們用注釋替換空格,就可以變成:
select/**/user()/**/from/**/dual
如下圖,sql命令能夠正確執行:
2. 括號繞過空格
空格被過濾,但括號沒有被過濾,可通過括號繞過。
我的經驗是,在mysql中,括號是用來包圍子查詢的。因此,任何可以計算出結果的語句,都可以用括號包圍起來。而括號的兩端,可以沒有多餘的空格。
括號繞過空格的方法,在time based盲注中,是屢試不爽的。
舉例說明,我們有這樣的一條sql查詢:
select user() from dual where 1=1 and 2=2
如何把空格減到最少?
觀察到user()可以算值,那麼user()兩邊要加括號,變成:
select(user())from dual where 1=1 and 2=2;
繼續,1=1和2=2可以算值,也加括號,去空格,變成:
select(user())from dual where(1=1)and(2=2)
dual兩邊的空格,通常是由程式設計師自己新增,我們一般無法控制。所以上面就是空格最少的結果。
這也是非常實用的乙個技巧。
用我常用的一條time based盲注語句做個總結:
這條語句是猜解user()第二個字元的ascii碼是不是109,若是109,則頁面載入將延遲。它:
1) 既沒有用到逗號、大小於符號
2) 也沒有使用空格
卻可以完成資料的猜解工作!
mysql注入繞過空格過濾的方法
sql注入時,空格的使用是非常普遍的。比如,我們使用union來取得目標資料 and 0 union select null,null,null 上面的語句,在and兩側 union兩側 select的兩側,都需要空格。1.注釋繞過空格 這是最基本的方法,在一些自動化sql注射工具中,使用也十分普遍...
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...