PHP网页下的注入原理
原理
php在处理字符集的时候,是以字节为单位处理,用单引号(半角'')包涵。网页程序员
若是以set name 的方式直接传入,则在用户登陆输入用户名时,可以用个别的特殊字符将后
边的单引号转义,从而造成在输入用户名时输入select语句的效果,从而完成注入。
用法
繁体“誠”字的字节码是0xdc0x5c,其中0x5c又是反斜杠(\)转义字符,从而可以转义后一
个单引号。搜索内容不完整,可继续补充SQL语句,or 1=1 limit 条件 /* #。其中,or的第二个
条件总是使返货条件为真,/*和#分别为SQL语言和PHP的注释符号。密码需要输入,则可以输
入*/#。
在url内则可以写如下面内容有相同的效果,不过先得得知用户名和密码的变量名称:
http://.............................../xxx.php?账户变量=%dc%27%20or%101=1%20limit%201%20/*&密码变量名=随意输入*/%23
其中%dc是转义字符,%20是空格,%27是单引号,%23是井号,/*...............*/SQL语言
其中%dc是转义字符,%20是空格,%27是单引号,%23是井号,/*...............*/SQL语言
的注释,#是php语言的符号。
注意
此方法是基于set name 方式直接传入的,如果该网页程序员自定义charset字符集则改为
二进制的方式传入,这时方法失效。