SQL注入 當or、and等常用字符被過濾(less-25)

當常用字符被註釋無法使用時,通常採取以下方法(可自行搜索sql注入繞開過濾等):

字母被註釋(or、and等)

1.大小寫變形

如:Or、OR、oR等

2.改變編碼

如:通過hex、urlencode、url等編碼
舉例:如果or被過濾時,我們可以採用url編碼(其相當於把ascii編碼的0x給替換成%,比如o的ascii爲0x6f,url編碼就是%6f),這個時候我們可以試試%6fr,即把o換成url編碼,也可以全換,也可以大小寫的換,如果沒被過濾就成功了,(如果%被過濾了的話…)
【注:這個可以積極的去使用,比如測試時and被註釋,使用&&替換也失敗,這個時候不妨試試%26%26(&的url編碼)】

3.添加註釋

如:/* */(這個不止可以應對字母被註釋)
舉例:某個過濾器能夠過濾的字符如下——“select ”、”from ”、”limit ”等,注意這些字符最後面都有一個空格,這個時候我們就能通過內聯註釋來繞過這個過濾器,如:

SELECT/**/username,password/**/FROM/**/users

【注:這個註釋甚至可以穿插在關鍵字當中,例如被過濾了or,我們可以把order by改成o/**/rder by,參考的資料上是這麼說,但本人試了沒成功,不知是否依舊實用】

4.往字符裏面插入被過濾的字符

比如or被過濾了,我們可以往裏面加or,即注入:oorr,這個時候裏面的or就被刪去了,剩下的組成新字符,也就是or,是個很好用的繞過方法,像這種類似的還有很多,需要我們去思考

5.利用符號形式

如:&&、||
舉例:

‘ || updatexml(1,concat(0x7e,(select database()),0x7e),1)--+

數字被註釋(1、2等)

6.使用浮點數,如:1.0、2.0

符號被註釋(>、<等)

7.利用函數來替代

如盲注時經常用到比較,這時候要是比較符號被註釋了不能用平常的方法了,所以需要用某些函數如greatest()greatest(n1,n2,n3,...)函數返回輸入參數(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
【注:當or被註釋時,像order by這種含有相關字符的語句也同樣無法使用,這個時候如果改變大小寫也無用時,可以使用上述的內聯註釋/**/,或者用別的編碼形式,如果不行的話,那就只能放棄使用order by,可以嘗試使用group by語句等】

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章