0x1 原理
針對場景:
waf對輸入的特殊字元進行轉義,且在轉義操作之後存在編碼函式
常規注入:
使用者輸入【1%27】=>php自身編碼【1’】=>php檢查到單引號,觸發函式,進行轉義【1\’】=>帶入sql語句【select * from users where ID=’1\’’】=>不能注入
二次編碼注入:
使用者輸入【1%2527】=>php自身編碼,%25轉換成%【1%27】=>php未檢查到單引號,不轉義【1%27】=>遇到一個函式編碼,使程式碼進行編碼轉換【1’】=>帶入sql語句=>能注入
關鍵:編碼函式的位置,必須在轉義函式之後,帶入sql語句之前,sql語句中%27並不會轉換成單引號,如圖
0x2 方法
0x3 防禦
不能說用了一次轉義函式就認為非法字元的危害被消除了
在帶入sql語句前都要進行轉義