SQL注入之宽字节与二阶注入

宽字节与二阶注入

宽字节注入

	当我们把 php.ini 文件里面的 magic_quotes_gqc 参数设为 ON 时
		所有的'(单引号), "(双引号),\(反斜杠)和 null 字符都会被自动加上一个反斜杠进行转义。
			还有很多函数有类似的作用如:
				addslashes()、mysql_escape_string()、mysql_real_escape_string()等
					添加在 get post cookie变量前
						为了解决sql注入攻击
			



	另外还有 parse_str()后的变量也受magic_quotes_gpc(魔术符号,对特殊符号转译)的影响。
	其中\的十六进制是 %5C ,当我们在单引号前面加上%df 的时候,最终就会变成 運', 
	如果程序的默认字符集是 GBK 等宽字节字符集,则 MYSQL 用 GBK 的编码时,
	会认为 %df 是 一个宽字符,
	也就是運,也就是说:%df\’ = %df%5c%27=縗’,有了单引号就好注入了。 
	
		' =======>\'单引号转义后占两个字节,所以我们需要通过繁体字%df 构造两个字节,
		最终用運干掉了\,
		也就是说被運占领了\ 所以最后在页面也不会显示出来.
			

**简单来说就是用汉字代替了\,不会再去转译单引号**

注意

		数字和字母占一个字节,汉字占两个字节。
		没有魔术引号的保护地方
			(1) $_SERVER 变量
				 PHP5 的$_SERVER 变量缺少 magic_quotes_gqc 的保护,导致近年来 X-Forwarded-For的漏洞猛爆,所以很多程序员考虑过滤 X-Forwarded-For
			(2)getenv()得到的变量(使用类似$_SERVER 变量)
			(3)$HTTP_RAW_POST_DATA 与 PHP 输入、输出流

二阶注入

	多存在于注册 搜索
		在注册名或者搜索中添加单引号等
发布了63 篇原创文章 · 获赞 8 · 访问量 2509

猜你喜欢

转载自blog.csdn.net/weixin_43079958/article/details/105273581
今日推荐