webug4.0 宽字节注入

本文深入探讨了宽字节注入的原理与实践,包括利用GBK双字节绕过的技巧,以及如何通过特定编码组合实现SQL注入。同时,文章提供了安全应对方案,如使用mysql_set_charset和mysql_real_escape_string确保应用程序安全。

防止sql手工注入

在php+mysql中, 可以通过转义特殊字符来防止污染sql语句(防注入),

有两种情况:

  1. 魔术引号, magic_quote_gpc 开关,不过高版本的PHP将去除这个特性
  2. 安全函数, addslashes,mysql_real_escape_string,mysql_escape_string等。

 

宽字节注入

上有计策下有对策, 当程序员设置数据库编码与php编码为不同的两种编码,那么就可能产生宽字节注入, 也称GBK双字节绕过。

也可以采用编码绕过。

 

涉及的基本概念

 

  • 字符、字符集 

字符(character)是组成字符集(character set)的基本单位。对字符赋予一个数值(encoding)来确定这个字符在该字符集中的位置。

  • UTF8 

由于ASCII表示的字符只有128个,因此网络世界的规范是使用UNICODE编码,但是用ASCII表示的字符使用UNICODE并不高效。因此出现了中间格式字符集,被称为通用转换格式,及UTF(Universal Transformation Format)。

  • 宽字节 

GB2312、GBK、GB18030、BIG5、Shift_JIS等这些都是常说的宽字节,实际上只有两字节。宽字节带来的安全问题主要是吃ASCII字符(一字节)的现象,即将两个ascii字符误认为是一个宽字节字符。
 

 

1. 引发原因

php编码为utf-8, 而mysql的编码设置为set  names 'gbk'或set character_set_client=gbk,php中编码为gbk,函数执行添加的是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值