设为首页 - 加入收藏
您的当前位置:主页 > 资讯 > 行业新闻 > 正文

通博tbet88从安全角度深入MySQL编码转换机制

来源:未知 编辑:通博tbet88 时间:2017-12-11

  正在php的逻辑缝隙中,有很大一部门trick跟编码转换机制相关(典型的如宽字节注入),此中除了遭到php本身的编码函数如iconv、mb_convert_encoding等影响之外,良多payload源于mysql内部的编码转换机制。这篇文章次要从实例角度出发,以图措辞,深切mysql编码转换机制。

  UTF-8,某些首字节编码不答应呈现等等,这些特例就不正在这引见了,若是正在现实操做中若是碰到出格奇异的现象,一般就是有一些特殊限制或者编码实现的bug

  客户端的字符集跟具体的客户端相关,分歧的客户端毗连的字符集纷歧样,mysql号令行的client connection results对PHP毗连mysql响应的值没有任何参考价值。对统一个数据库的毗连,mysql号令行显示客户端毗连相关字符集都是utf8,而php毗连mysql的字符集如下图

  正在继续研究之前,请必然理解分歧的客户端毗连数据库的字符集是有可能分歧的,所以一般城市setnames 确保字符集被设置为需要的值。

  好比转码挨次utf-8 utf-8 utf-8,若是输入不是一个无效utf-8字符,将正在client转换的时候间接被截断

  无效的概念有两个,一个是编码底子不正在这个范畴,好比首字节为81,底子不正在UTF-8编码后的首字节范畴,另一个就是不完整,好比”你”的编码是e4bda0,我们只输入e4bd,能够看到插入的还为空

  2.客户端的编码设置一般通过setnames xxx一般表的默认字符集能够通过show create tables xxx来查看,现实上mysql编码转换的过程只和上述两个操做看到的字符集相关系

  所以addslashes之后,$a值变为%81\’,可是%81\构成了”乗”,单引号被独立出来,于是完成了注入

  utf-8转latin1还线,这是什么鬼?其实这就是mysql实现的体例。每种编码法则只是一个法则,实正的表示取决于实现,编码中还可能存正在一些特殊环境,若是大部门操做都跟你的料想一样,可是有一些操做却跟你的料想纷歧样的时候,很可能就是编码存正在特殊景象

  mysql若是设置了character_set_client=gbk或者set names gbk,然后若是通过addslashes对单引号’进行本义,则能够通过注入%81%27,因为单引号%27被本义,整个注入字符串被改为%81%5c%27,这个时候因为mysql认为客户端编码是gbk,%81%5c被组合成汉字乗,从而成功注入一个单引号

www.tbet88.com通博娱乐以高度负责任的态度为您提供最新、最及时的球赛状况,tbet88拥有网络赚钱的优势,注册送体验金的平台现在很多,所以才有了万人齐聚一堂的欢庆场面。
上一篇:tbet88娱乐PHP Tokenizer 学习笔记
下一篇:没有了

相关文章:

网友评论:

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片

通博tbet88 - 娱乐先行者 联系QQ:498872301 邮箱:498872301@qq.com

Copyright © 2012-2017 通博tbet88 版权所有

Top