6.特殊符號
特殊字元是什麼?除了字串和數字都是特殊字元 比如~!@#¥%…………&*()—
烏雲的一篇waf繞過技巧的文章的幾個例子
1.使用反引號`,例如select`version()`,可以用來過正則跟空格,特殊情況下還可以把它當成注釋符來用
2.神奇的"- .", select id-1 1.from users; " "是用於字串鏈結的,"-"和"."在此也用於連線,可以逃過空格和關鍵字過濾
3.@符號,select@……1.from users; @用於變數定義如@var_name,乙個@表示使用者定義,@@表示系統變數
4.mysql function() as *** 也可不用as和空格 select-count(id)test from users; //繞過空格限制
7.http引數控制
這種方法是http分割注入,使用控制字元 , 執行換行
也是比較好使的一種方法,
舉個栗子: 77169.com/?id=1 union/*&b=*/select 1,user/*&c=*/from users--
這裡是不同的引數之間進行分割,到了資料庫執行查詢時再合併語句
8.緩衝區溢位
緩衝區溢位用於對waf,有不少waf是c寫的,而c語言本身沒有緩衝區保護機制,因此如果waf在處理測試量時超出其緩衝區長度,就會引發bug從而實現繞過
舉個栗子: ?id=1 and(select 1)=(select 0xa*1000) union select 1,2,version(),4,5,database(),version(),8,9,10,11,12,13,14,15,16,17,18
栗子上的 0xa*1000 指的是0xa後面的 "a" 重複1000次,一般來說對應用軟體構成緩衝區溢位都需要比較大的測試長度,這裡1000僅供參考,在一些情況下也可以更短
9.番外篇-嘮嗑
這裡也就簡單嘮嗑一下,繞waf其實也是很多人比較頭疼的一件事情,當然以前我也很頭疼,其實當你摸清了waf你就會發現,原來可以這樣操作,
像我們搞滲透,為什麼去做繞waf這個操作,簡單來講 就相當於乙個客戶的site 一堆漏洞,當他裝了乙個waf就說沒有漏洞了,你覺得這樣行得通嗎?
這樣肯定是不行的,因為這種是欺騙自己,如果惡意黑客繞過了你的waf利用你的漏洞造成了業務資料的洩露或者損失財產,那後果是不可估量的!
我們繞waf只是為了對客戶的負責,能讓他們重視起來程式自身的安全,如果程式自身的安全無法做到,那麼就別去指望外殼去保護它,因為如果哪天外殼沒有了,那你也將是惡意黑客下的一枚shell。
其實我這裡講的比較籠統,具體操作一定要去根據實際情況去判斷,去整合下再選擇去進行繞過測試,如果你覺得繞waf很難,那先去搭建乙個waf嘗試下被攔截的感覺
當然你也可以當waf是根據你的關鍵字進行過濾的(規則模組)
打個比方 select waf會提前匹配規則,如果符合了規則模組的過濾,那麼將被攔截 但是你這個時候再去試著 s/**/e/**/l/**/e/**/c/**/t 看看這樣是否會被攔截
如果沒有被攔截 那麼就印證了我們說的 是根據你的關鍵字來進行過濾的,我們所做的 只是讓waf認不出我們的關鍵字就可以了
10.繞過總結
其實這個是不用寫的,但是我還是寫了,因為繞過很多時候url雙重編碼或者其他編碼方式不一定繞過,我們可以採用組合繞過方式,比如先大小寫混合,再同等函式替換 再編碼去試試看
不要刻意的去指望一種方法繞過,我這幾篇文章也只是簡單寫寫的,也體現了繞過方式的核心 模糊關鍵字 這樣對方將無法認出你的關鍵字
這裡只是每種方式簡單說了一種
過濾危險字元,字元轉碼,處理字串中的空值
public class chstr else catch exception e return strvalue 返回轉換後的輸 入變數strvalue 處理字串中的空值 public static final string nulltostring string v,string tov ret...
字串過濾
這個我這裡自己一直用的幾個函式,下面貼出來。希望盡量不是直接要例項就去用,而不關心他本來的意義和實現思路等。加油!using system using system.collections.generic using system.text using system.text.regularexpr...
swift 過濾字串 Swift 字串
swift 字串 swift 字串是一系列字元的集合。例如 hello,world 這樣的有序的字元型別的值的集合,它的資料型別為 string。建立字串 你可以通過使用字串字面量或 string 類的例項來建立乙個字串 import cocoa 使用字串字面量 var stringa hello,...