不过有人说,如果PHP站点开启GPC魔法转换php万能密码,特殊符号就会被通配,完全避免PHP注入。
虽然说这句话的人没有仔细想过,更没有尝试过使用通用密码进入PHP的后端。
虽然GPC魔法转换是否开启对于使用万能密码进入后台并没有影响。
如果使用通用密码'or'='or',就进不去。原因是GPC开启时单冒号会被转换。
我在注入PHP时常用的通用密码是:'or1=1/*。
那么我们来分析一下为什么它会进入后台。
如果sql语句是这样写的:“SELECT*FROMadminwherename'].”'andpassword='”.$_POST['password'].“'”,那么我们在账户处输入通用密码'or1=1/* ,随意输入密码,sql
该句子变为 select*fromadminwhereandpassword='任意字符'。
/*是mysql的注释符,这样前面的东西都被注释掉了,这就是密码可以随意输入的原因。
假设没有启用GPC转换php万能密码,请看:where'的逻辑值为假,旁边1=1的逻辑值为真,整体变为假或真,最终的逻辑值
这是真的,所以我去了后台。
因此,如果打开 GPC 转换,则会转换单冒号。 这句话就变成了where'和name=''逻辑值相同,都是假,那么1=1
如果是真的,那么总的SQL语句的逻辑值不还是真的吗? 我有什么理由不能去后台吗?
所以一般情况下,PHP网站的通用密码可以这样写:'or1=1/*,而是否开启GPC转换对其没有影响。
什么效果啊!
所以请改变你的看法:字符注入的PHP网站可以使用通用密码'or1=1/*。