宽字节注入及其防御

0x00什么是宽字节?

即用两个字节储存一个字符
比如GB2312,GBK,GB18030,BIG5,Shift_JIS
高8位>128

0x01宽字节注入原理

image.png

0x02程序上的体现(白盒)

1.mysql编码为双字节编码

mysql_query("SET NAMES gbk");

2.使用preg_replace进行转义

$string = preg_replace('/'. preg_quote('\\') .'/', "\\\\\\", $string);          
$string = preg_replace('/\'/i', '\\\'', $string);                               
$string = preg_replace('/\"/', "\\\"", $string);              

3.使用addslashes进行转义

$string= addslashes($string);  

4.使用mysql_real_escape_string进行转义

$string= mysql_real_escape_string($string);

0x03防御宽字节注入

1.使用utf-8
2.mysql_real_escape_string,mysql_set_charset('gbk',$conn)
3.设置参数,character_set_client=binary

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 01 背景知识 字符集 在了解宽字节注入之前,我们先来看一看字符集是什么。字符集也叫字符编码,是一种将符号转换为二...
    Ackerzy阅读 7,870评论 0 7
  • 网页出现乱码的原因: 客户端与数据库的数据传输处编码、数据库存储处编码,两者编码不同,就会出现乱码。还有一种情况,...
    FKTX阅读 7,631评论 0 0
  • 宽字节注入是因为数据库使用了GBK编码,不过现在大都使用unicode国际编码,大多数网站都使用了utf-8的编码...
    CSeroad阅读 28,231评论 7 4
  • 有时候 我感觉自己很渺小 就像大千世界里的一颗沙砾 可有可无 但是我想啊 沙砾在太阳的折射下也会发光 在蚌壳的孕育...
    Sunrise云逸阅读 3,262评论 1 1
  • 杨幂幂、阮经天、白猿、你可以看看、然后淡出、那么淡定、2013、2012、2011,2010,2009,2008 ...
    你我他有都有阅读 754评论 0 0