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