二次編碼注入

雨九九發表於2019-03-25

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語句前都要進行轉義

 

相關文章