sqli-二次编码注入

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语句前都要进行转义

原文地址:https://www.cnblogs.com/Rain99-/p/10592772.html