关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » 网站维护 »深入分析SQL字符串限制长度漏洞

    深入分析SQL字符串限制长度漏洞

    2010-11-26 13:10:00 出处:ITJS
    分享

    MySQL字符串的限制长度看似重要性不要,其实和整个MySQL数据库的安全性是息息相关的,很值得我们去深入研究分析。

    SQL注入攻击一直都在被广泛的讨论,然而人们却忽略了今天我将要介绍的这两个安全隐患,那就是超长SQL查询和单列SQL字符长度限制可能会带来的问题。

    首先我们来谈论一下超长SQL查询

    max_packet_size

    这个东西是用来限制mysql客户端和服务器通信数据包的长度的,比如一个查询为“select * from user where 1”,那么这个长度仅仅几十个字节,所以不会超标。在绝大多情况下,我们很难会超过mysql的默认限制1M(可以想象一下,1M的SQL语句还是很长的)。这里插一句,看到该文之后,我终于清楚我当初用PEAR DB 的INSERT插入数据失败的原因了,很可能就是数据长度超标。对于MySQL来说,如果查询MySQL字符串的大小超过了这个限制,mysql将不会执行任何查询操作

    如果访问者有可能控制你的sql长度,那么你的程序可能会受到攻击。哪些情况访问者可能控制sql的长度呢,比如不限制关键字长度的搜索。还有可能就是你的程序如果要将用户的登录作为日志启用,总之凡是涉及到超长sql查询的地方,一定得小心检查自己的sql,防止超长而查询失效。不过说实在的,本人认为这个问题倒不是多大,数据库光里管理员也可以自行设置MySQL的max_packet_size的长度,或者在处理可能超长的SQL查询的时候做一个长度判断。

    MySQL列长度限制

    这个是该篇文章的重点。MySQL对于插入的字符串,如果长度超过了数据表限制的长度,MySQL将会截取前面部分MySQL字符串插入数据库中,而不会将错误报给web程序。对于粗心的程序员,这个问题可能会导致程序的漏洞,其实目前的wordpress有很多限制,通过这个漏洞攻击应该没有任何作用。下面是原作者的几个假设,如果同时满足这几个条件,获取一个站点的用户名是相当容易的事情,幸运的是目前的wordpress并不太可能会同时满足下面的条件:

    该web应用允许用户注册(开放注册的wordpress满足此条件);

    超级管理员的用户名已知的,比如admin,这样方便攻击者寻找目标(可怜wordpress也满足)

    MySQL使用的是默认的配置(估计大多数都满足)

    注册新用户的时候,程序没有对用户名的长度给予限制(我测试过,wordpress也满足)

    用户名被限制在16个字符(这个和上面的没有关系,仅仅是方便举例)

    下面这个是攻击者是怎么攻击的:

    首先攻击者用已知的超级管理员id如admin注册,那么这个时候程序就会用

    (show/hide)plain text

    SELECT * FROM user WHERE username='admin '

    来检查该ID是否已经存在,如果存在,这不允许注册,当然,攻击者尝试注册admin肯定会失败;

    但是如果攻击者用 admin X(admin和x之间有11个或以上的空格)来注册呢,按照上面的判断,由于admin     x不存在数据库中,所以当然就能注册成功了,事实上wordpress2.6.1之前的版本确实可以这样,由于列长度的限制在16个字符内,所以末尾的x就被截掉了,那么现在数据库中就存在两个一模一样的用户admin了。(旁白:糟糕,那我的程序不是都要去修改。其实没有必要,你只要把ID设置为UNIQUE就可以了,于是乎,下面的问题就和你没有关系了)

    攻击者继续,这个时候攻击者就顺利的注册了admin这个用户名,然后攻击者用admin和自己的密码登录进入账户管理(wordpress即使注册了也无法登陆),由于真正的admin的帐号先于攻击者admin注册,所以在账户信息页面,显示的信息非常有可能就是真正admin的信息,包括密码提示和email等,这个时候攻击者就可以对admin的信息进行任意修改,包括密码和密码找回。

    所以,写web程序的你,是不是该去检查一下自己的程序是否有此类的漏洞呢。

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    正版 Windows 11产品密钥怎么查找/查看?

    还有3个月,微软将停止 Windows 10 的更新

    Windows 10 终止支持后,企业为何要立即升级?

    Windows 10 将于 2025年10 月终止技术支持,建议迁移到 Windows 11

    Windows 12 发布推迟,微软正全力筹备Windows 11 25H2更新

    Linux 退出 mail的命令是什么

    Linux 提醒 No space left on device,但我的空间看起来还有不少空余呢

    hiberfil.sys文件可以删除吗?了解该文件并手把手教你删除C盘的hiberfil.sys文件

    Window 10和 Windows 11哪个好?答案是:看你自己的需求

    盗版软件成公司里的“隐形炸弹”?老板们的“法务噩梦” 有救了!

    IT头条

    公安部:我国在售汽车搭载的“智驾”系统都不具备“自动驾驶”功能

    02:03

    液冷服务器概念股走强,博汇、润泽等液冷概念股票大涨

    01:17

    亚太地区的 AI 驱动型医疗保健:2025 年及以后的下一步是什么?

    16:30

    智能手机市场风云:iPhone领跑销量榜,华为缺席引争议

    15:43

    大数据算法和“老师傅”经验叠加 智慧化收储粮食尽显“科技范”

    15:17

    技术热点

    商业智能成CIO优先关注点 技术落地方显成效(1)

    用linux安装MySQL时产生问题破解

    JAVA中关于Map的九大问题

    windows 7旗舰版无法使用远程登录如何开启telnet服务

    Android View 事件分发机制详解

    MySQL用户变量的用法

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。