繞過MSSQL防注入的一些解決辦法

2021-12-29 16:30:35 字數 1337 閱讀 5321

在工作中還是其他時候都時常遇見一些**加了防注入**,這確實讓人頭痛不已,不過另乙個方面讓我終於又有了乙個新的可以深入琢磨的課題,同時也看見了前輩們提供的很多繞過防注入方法,都著實讓我受益匪淺。把思路集中一下,具有列出以下的幾點:

1.編碼處理

2.語句變換

3.其他

對這幾點還是做一些簡要的說明吧!

編碼處理->

關於編碼問題在google中實在是搜的是數不勝數,不過編碼也有很多,這裡就簡單的說下常用的幾種吧:

1)urlencode 這個編碼很常見了吧,如%31%3d%31,不過在繞過防注入中效果確實不太好,除非伺服器只是對瀏覽器中的url位址進行了判斷

2)ascii 這個一般情況下用的稍微多點,char(***)大家都應該非常熟悉,裡面加上相應的ascii碼並用+連線多個就可以了

3)hex 乙個非常經典的繞過技術,不過由於mssql沒有像mysql提供unhex()這樣的函式,所以使用上要求語句須支援分句,將其定義後然後賦值就可以使用了

語句變換->

實現某個功能我們可以通過不同的語句來實現,其中一種可能就有適合當前環境下的語句,看看下面的sql語句吧,同時也是我在注入過程中經常用到的

select password from users

convert(int,select password from users)

這樣就可能讓我們獲取到密碼。不要著急,這只是乙個變換句子的例子,現在我們來看看如果在防注入了過濾了某些查詢的關鍵字怎麼辦呢?

select password from users //由於過濾了password無法執行

declare @pw varchar(1000) set @pw=070617373776f7264; select @pw form users; //這樣通過對特別字元進行hex處理就能繞過,主要應對比較特別的情況,如ids之類的安全裝置,配合其他方式繞過防注入也是非常不錯的

其他->

除此之外,我們還可以通過一些比較特別的方法來繞過,如in、between等等,例如過濾了select,看下面

select password from users //過濾select,無法執行

s%e%l%e%c%t password from users //通過%連線

「sel」+」ect」 password from users //通過+來連線

se/**/lect password from users //通過/**/來連線

其次,在一些防注入中由於指令碼沒有過濾cookie提交,由此我們可以通過cookie來進行注入,其實方法真的很多,想上次『的過來問題最終也是通過語句變換的方式解決了,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...

WAF繞過的一些總結和思考,WAF怎麼防繞過。

資料報 waf 利用string儲存請求引數,解碼後檢測 apac he c 語言等利用string等儲存結構儲存請求,在解碼時,00會成為 null 從而截斷接下去的請求內容 因此例如 id 1 00 20and 201 1 就成為了 id 1 從而繞過waf檢測 型別2 fuzz.php cod...

關於mssql的一些設定

select from sys.servers 增加資料鏈 exec sp addlinkedserver server jzjy 被訪問的伺服器別名 習慣上直接使用目標伺服器ip,或取個別名如 joy srvproduct provider sqloledb datasrc 192.101.1.2...