SQL注入时,空格的使用是非常普遍的。比如,我们使用union来取得目标数据。
空格被过滤,但括号没有被过滤,可通过括号绕过,我的经验是,在MySQL中,括号是用来包围子查询的。因此,任何可以计算出结果的语句,都可以用括号包围起来。
mysql 是先执行and后执行or的,如果你没加括号,系统会先判断1 = 1 AND PAYMENT_METHOD_CD = '0'符不符合,或者PAYMENT_METHOD_CD = '1'或者 PAYMENT_METHOD_CD = '2 ' 符不符合,只要这三个满足一个就可以达成,后面两个是没有1=1恒成立这个条件的优先顺序: 小括号、NOT、AND、OR。
错误的写法:这个时候你会怀疑到底是不是where条件有问题,其实是因为先执行了and,最后再来执行的or,所以就查出来了。
正确的写法:因为括号的优先级最高,所以先执行了再来and就没问题了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)