由于addslashes无视目标字符串的编码,直接按照二进制字节对字符串添加下划线,会导致很多注入隐患。

比如说gbk环境下,有一个宽字符是"\xbf\x27"。虽然它不在gbk的编码范围内,但是会把它当成宽字符解析,攻击者可以通过构造url参数等方式传进来。传统的addslashes函数会直接无视掉"\xbf"而直接对后面的"\x27"加下划线,结果变成了"\xbf\x5c\x27"。这样前面两个字节构成宽字符,后面的"\x27"就会单独被解析。

防止注入的话,能够预编译是最好,不能的话应该按照当前的编码,用mb前缀的字符串处理函数手写一个。

比如下面这个:

function mb_addslashes($str, $enco)
{$retstr = "";$len = mb_strlen($str, $enco);for($i = 0; $i < $len; $i++){$chr = mb_substr($str, $i, 1, $enco);if($chr == "\0")$retstr .= "\\0";else if($chr == "'")$retstr .= "\\'";else if($chr == "\"")$retstr .= "\\\"";else if($chr == "\\")$retstr .= "\\\\";else $retstr .= $chr;}return $retstr;
}

addslashes注入漏洞与mb_addslashes相关推荐

  1. phpsso.php 注入漏洞,PHPCMS各种注入漏洞补丁

    1.宽字节注入漏洞 /phpcms/modules/pay/respond.php 位置约16行 原来代码$payment = $this->get_by_code($_GET['code']) ...

  2. MySQL宽字节注入漏洞分析_宽字节注入

    概念 单字节字符集: 所有的字符都使用一个字节来表示,比如 ASCII 编码. 多字节字符集: 在多字节字符集中,一部分字节用多个字节来表示,另一部分(可能没有)用单个字节来表示. 两位的多字节字符有 ...

  3. 织梦guestbook.php漏洞,DEDE:织梦漏洞修复(含任意文件上传漏洞与注入漏洞)

    这几天阿里频繁提醒网站有漏洞,搞得我不胜其烦,好吧,我修复还不行吗?搜索之后整理如下,仅供参考(5.7以上版本适用): 任意文件上传漏洞修复 一./include/dialog/select_soft ...

  4. PHPSHE 1.7前台SQL注入漏洞分析

    此CMS  SQL注入漏洞产生原因为未将经过 addslashes() 函数过滤的数据使用单引号包裹,从而导致的SQL注入漏洞.接下来看漏洞详情: 首先查看phpshe下的common.php文件37 ...

  5. Discuz!uc.key泄露导致代码注入漏洞uc.php的解决方法

    漏洞名称:Discuz uc.key泄露导致代码注入漏洞 漏洞描述:在Discuz中,uc_key是UC客户端与服务端通信的通信密钥,discuz中的/api/uc.php存在代码写入漏洞,导致黑客可 ...

  6. web漏洞--注入漏洞

    目录 1.Sql注入 2.Xml注入(xml实体注入,XXE) 3.远程文件包含漏洞 4.本地文件包含漏洞 5.命令注入漏洞 1.Sql注入 1.概念 1.SQL注入是一种Web应用代码中的漏洞. 2 ...

  7. discuz7.2sql注入漏洞

    今天尝试了discuz7.2动力论坛的sql注入漏洞 原因是由faq.php文件源码存在漏洞引起的 下载官方discuz7.2源码,在本地搭建漏洞环境 http://www.comsenz.com/d ...

  8. Web安全之Sql注入漏洞

    Sql注入漏洞 SQL注入漏洞主要形成的原因是在数据交互中,前端的数据传入到后台处理时,没有做严格的判断,导致其传入的"数据"拼接到SQL语句中后,被当作SQL语句的一部分执行. ...

  9. php7 魔术引号,php代码审计魔术引号带来的注入问题浅析之Discuz_7.x faq.php SQL注入漏洞...

    首先根据存在的目的可以理解处理机制: 当打开时所有的'单引号."双引号.\反斜线.NULL字符都被自动加上一个反斜线进行转义: 1)得到原字符的场景举例(',\,",null) $ ...

最新文章

  1. bzoj 4814: [Cqoi2017]小Q的草稿【计算几何】
  2. 测试core :: demangled_name
  3. linux系列之: 你知道查看文件空间的两种方法吗?
  4. 农历php,php阳历转农历优化版
  5. Docker入门系列(一):目标和安排
  6. Nodejs V8引擎 fast property lookup
  7. Java多线程之Runable与Thread
  8. IT人终于把自己熬成了民工
  9. 笔记本电脑怎样连接打印机_“小小”打印机 | 惠普M17w迷你激打
  10. 命令注入的一点学习记录
  11. 增量式修改检验和(IP, TCP, UDP)算法的研究和实现
  12. 指纹识别算法的matlab实现
  13. 亲属卡额度是什么意思_2019信用卡权益总结之十二:附属卡
  14. VScode启动流程
  15. 【案例】简单图片和段落上下排版制作
  16. VMware无法启动虚拟机里面没网络解决方法
  17. liunx下设置自动完成任务(每周六晚一点整,系统自动把/home目录文件下到所有文件做一个备份,备份到/var/backups/home.tar.gz))
  18. 如何一步步实现异步上传图片并预览图片(异步加载图片)
  19. GSM技术类有哪些最新发表的毕业论文呢?
  20. openflow交换机 ryu_openflow的初步认识及RYU控制器实践

热门文章

  1. 基于FPGA实现Aurora高速串行接口
  2. centos7 网卡配置vlan_centos 7 下多网卡绑定+ vlan 网卡配置
  3. Linux内外存访问
  4. 栈和队列之栈的定义和实现
  5. ROS下多个kinect在一台电脑上同时运行
  6. 音视频开发必备基本基础知识(1)
  7. 英业达软件测试工程师,「天津英业达软件测试工程师」面试招聘|工资待遇 - 看准网...
  8. php的toast,jQuery 一句代码轻松实现 Toast 的提示框
  9. 线程实现的方式、多线程模型
  10. 快速入门MyBatis-Plus,看这一篇就够了。