目錄
- 三、SQL注入繞過技術
- 3.1 大小寫繞過注入
- 3.2 雙寫繞過注入
- 3.3 編碼繞過注入
- 3.4 行內注釋繞過注入
- 3.5 SQL注入修復建議
三、SQL注入繞過技術
3.1 大小寫繞過注入
??使用關鍵字大小寫的方式嘗試繞過,如And 1=1(任意字母大小寫都可以,如aNd 1=1,AND 1=1等),就可以看到訪問id=1 And 1=1時頁面回傳與id=1相同的結果,訪問id=1 And 1=2時頁面回傳與id=1不同的結果,得出存在SQL注入漏洞的結論,
??使用order by查詢欄位數量,還是利用修改關鍵字大小寫來繞過它,嘗試只改order這個單詞,結果發現order改成Order后,頁面顯示正常,說明by并沒有被攔截,最終通過嘗試,
??接著,使用Union方法完成此次注入,如果仍然遇到關鍵字被攔截,則嘗試使用修改大小寫的方式繞過攔截,
3.2 雙寫繞過注入
??關鍵字and被過濾時,可以嘗試使用雙寫的方式繞過,如anandd 1=1,當and被過濾后,anandd變成了and,所以這時傳入資料庫的陳述句是and 1=1,
??當訪問id=1 order by 3時,如果MySQL的錯誤資訊為“der by 3”,說明這里并沒有過濾order整個單詞,而是僅過濾or,因此只需要雙寫or即可,
??后面的注入程序與Union注入的一致,
3.3 編碼繞過注入
??如果發現關鍵字and被攔截,可以嘗試使用URL全編碼的方式繞過攔截,由于服務器會自動對URL進行一次URL解碼,所以需要把被攔截的關鍵字編碼兩次,這里需要注意的是,URL編碼需選擇全編碼,而不是普通的URL編碼,關鍵字and進行兩次URL全編碼的結果是%25%36%31%25%36%65%25%36%34,
3.4 行內注釋繞過注入
??行內注釋繞過即將被攔截的關鍵字寫在注釋中,通過內斂的寫法執行完整陳述句,例如id=1 /*!and*/ 1=1,
3.5 SQL注入修復建議
??常用的SQL注入漏洞修復建議有兩種,
- 過濾危險字符
??多數CMS都采用過濾危險字符的方式,例如,采用正則運算式匹配union、sleep、load_file等關鍵字,如果匹配到,則退出程式,
- 使用預編譯陳述句
??使用PDO預編譯陳述句,需要注意的是,不要將變數直接拼接到PDO陳述句中,而是使用占位符進行資料庫的增加、洗掉、修改、查詢,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/306025.html
標籤:其他
上一篇:MATLAB從入門到精通(1)
