- 當(dāng)常用字符被注釋無法使用時(shí),通常采取以下方法(可自行搜索sql注入繞開過濾等):
- 0x01字母被注釋(or、and等)
- 1. 大小寫變形
- 2. 改變編碼
- 3. 添加注釋
- 4. 往字符里面插入被過濾的字符(雙寫法)
- 5.利用符號形式
- 0x02數(shù)字被注釋(1、2等)
- 0x03 符號被注釋(<、>等)
當(dāng)常用字符被注釋無法使用時(shí),通常采取以下方法(可自行搜索sql注入繞開過濾等):
0x01字母被注釋(or、and等)
1. 大小寫變形
如:Or、OR、oR等
2. 改變編碼
如:通過hex、urlencode、url等編碼
舉例:如果or被過濾時(shí),我們可以采用url編碼(其相當(dāng)于把a(bǔ)scii編碼的0x給替換成%,比如o的ascii為0x6f,url編碼就是%6f),這個(gè)時(shí)候我們可以試試%6fr,即把o換成url編碼,也可以全換,也可以大小寫的換,如果沒被過濾就成功了,(如果%被過濾了的話…)
【注:這個(gè)可以積極的去使用,比如測試時(shí)and被注釋,使用&&替換也失敗,這個(gè)時(shí)候不妨試試%26%26(&的url編碼)】
3. 添加注釋
如:/* */(這個(gè)不止可以應(yīng)對字母被注釋)
舉例:某個(gè)過濾器能夠過濾的字符如下——“select ”、”from ”、”limit ”等,注意這些字符最后面都有一個(gè)空格,這個(gè)時(shí)候我們就能
通過內(nèi)聯(lián)注釋來繞過這個(gè)過濾器,如:
SELECT/**/username,password/**/FROM/**/users
【注:這個(gè)注釋甚至可以穿插在關(guān)鍵字當(dāng)中,例如被過濾了or,我們可以把order by改成o/**/rder by,參考的資料上是這么說,但本人試了沒成功,不知是否依舊實(shí)用】
4. 往字符里面插入被過濾的字符(雙寫法)
比如or被過濾了,我們可以往里面加or,即注入:oorr,這個(gè)時(shí)候里面的or就被刪去了,剩下的組成新字符,也就是or,是個(gè)很好用的繞過方法,像這種類似的還有很多,需要我們?nèi)ニ伎肌?/p>
5.利用符號形式
如:&&、││
舉例:
‘ ││ updatexml(1,concat(0x7e,(select database()),0x7e),1)--+
0x02數(shù)字被注釋(1、2等)
6. 使用浮點(diǎn)數(shù)
如:1.0、2.0
0x03 符號被注釋(<、>等)
7. 利用函數(shù)代替
如盲注時(shí)經(jīng)常用到比較,這時(shí)候要是比較符號被注釋了不能用平常的方法了,所以需要用某些函數(shù)如greatest()
【greatest(n1,n2,n3,…)函數(shù)返回輸入?yún)?shù)(n1,n2,n3,…)的最大值】、least()等。
比如語句:select * from users where id=1 and ascii(substr(database(),0,1))>64
就可以替換成:select * from users where id=1 and greatest(ascii(substr(database(),0,1)),64)=64
【注:當(dāng)or被注釋時(shí),像order by這種含有相關(guān)字符的語句也同樣無法使用,這個(gè)時(shí)候如果改變大小寫也無用時(shí),可以使用上述的內(nèi)聯(lián)注釋/**/,或者用別的編碼形式,如果不行的話,那就只能放棄使用order by,可以嘗試使用group by語句等】。
該文章在 2020/10/20 10:57:42 編輯過