一、如果發現一個url可能是注入點之后我們可以嘗試手注,但是一般的網站都會過濾一些字符串。
在^沒有被過濾的時候可以利用它來測試
異或:xor或^
邏輯運算就是:同真異假(兩個條件結果相同就為真,結果不同就為假)
例如:1^0 就是 1 ,1^1 就是 0
例如:?id=1’ ^ (length(‘union’)!=0)--+
如果union被過濾,則后面條件的結果就是假的,前面也是假的,url返回正確
如果union沒有被過濾,則后面的條件的結果就是真的,而前面是假的,url返回錯誤
也可以是?id=1’ ^ (length(‘union’)=5)--+
二、簡單的sql繞過
基本關鍵字:括號、空格、引號、#、=、+、and、or、order、select、union、update、inster、into、delete、outfile……
一些繞過的方法:
1、 大小寫混寫
2、 使用url編碼替換字符 ‘ %27,# %23
3、 十六進制繞過 where=“user” where=0x7573657273
4、使用&& || 代替and or
5、雙寫關鍵字 aandnd
6、繞過空格:用tab鍵代替空格
用回車chr(13)&chr(10),url編碼的形式%0d%0a
用括號 id=1(and)1=1
7、=用like、rlike、等代替
8、使用/**/注釋符來,重組關鍵字 un/**/i/**/on
9、注釋負://,-- , /**/, #, --+, -- -, ;,%00,--a
如果是使用gbk的網頁編碼的網站也可以利用寬字節來繞過
三、寬字節注入
寬字節注入:‘被轉義成\',可以通過寬字節繞過轉義把’逃逸出來
gbk 占用兩字節
ASCII占用一字節
如果網站的字符集是GBK,MYSQL使用的編碼也是GBK的話,利用gbk取值范圍(第一個字節129-254,第二個字節64-254),會解析為一個漢字,這樣\就會是去應有的作用。例如%df%5C%27(%bb%5C%27),前兩個合並為一個漢字“縗’”(%5C是\),然后‘就被逃逸出來了,然后就可以進行注入測試。
寬字節注入與HTML頁面編碼是無關的值型SQL注入無效。