当前位置: 首页 > news >正文

MySQL长字符截断

MySQL超长字符截断又名"SQL-Column-Truncation",是安全研究者Stefan Esser在2008 年8月提出的。

在MySQL中的一个设置里有一个sql_mode选项,当sql_mode设置为default时,即没有开启STRICT_ALL_TABLES选项时(MySQLsql_mode默认即default),MySQL对插入超长的值只会提示warning,而不是error,这样就可能会导致一些截断问题。

新建一张表测试,表结构如下(MySQL5.1):

CREATE TABLE USERS(id int(11) NOT NULL, //长度为7username varchar(7)NOT NULL,password varchar(12)NOT NULL ,)

分别插入以下SQL语句(注入提示消息)。

①插入正常的SQL语句。

mysql> insert into users(id,username,password)values(1,'admin','admin');//成功插入,无警告,无错误Query OK,1 row affected(0.00 sec)

②插入错误的SQL语句,此时的"admin "右面有三个空格,长度为8,已经超过了原有的规定长度。

mysql> insert into users(id,username,password)values(2,'admin       ','admin');//成功插入,一个警告Query OK,1 row affected,1 warning(0.00 sec)

③插入错误的SQL语句,长度已经超过原有的规定长度。

mysql> insert into users(id,username,password) values(3,'admin    x','admin');//成功插入,一个警告Query OK,1 row affected,1 warning(0.00 sec)

MySQL提示三条语句都已经插入到数据库,只不过后面两条语句产生了警告。那么最终有没有插入到数据库呢?执行SQL语句查看一下就知道了。

mysql> select username from users;

可以看到,三条数据都被插入到数据库,但值发生了变化,此时在通过length来取得长度,判断值的长度。

mysql> select length(username)from users where id =1 ;

可以发现,第二条与第三条数据的长度为7,也就是列的规定长度,由此可知,在默认情况下,如果数据超出列默认长度,MySQL会将其截断。

但这样何来攻击一说呢?

面查询用户名为'admin'的用户就知道了。

mysql> select username from users where username='admin';

只查询用户名为admin的用户,但是另外两个长度不一致的admin用户也被查询出,这样就会造成一些安全问题,比如,有一处管理员登录是这样判断的,语句如下:

$sql = "select count(*) from users where username='admin' and password='*******;

假设这条SQL语句没有任何注入漏洞,攻击者也可能登录到管理页面。假设管理员登录的用户名为 admin,那么攻击者仅需要注册一个"admin”用户即

可轻易进入后台管理页面,像著名的WordPress就被这样的方式攻击过。

http://www.lryc.cn/news/23560.html

相关文章:

  • python计算量比指标
  • 下拉框推荐-Suggest-SUG
  • Nmap的几种扫描方式以及相应的命令
  • Qt::QOpenGLWidget 渲染天空壳
  • 谷歌搜索技巧大全 | 谷歌高级搜索语法指令
  • JAVA开发(JAVA垃圾回收的几种常见算法)
  • 你还不会用CAD一键布置停车位?赶紧学起来!
  • 【MySQL之MySQL底层分析篇】系统学习MySQL,从应用SQL语法到底层知识讲解,这将是你见过最完成的知识体系
  • 单核CPU是否有线程可见性问题?
  • MyBatis 架构介绍
  • 加密算法---RSA 非对称加密原理及使用
  • MySQL-查询语句
  • 【算法】【数组与矩阵模块】求数组中需要排序的最短子数组长度
  • centos安装Anaconda3
  • 【微信小程序】-- WXML 模板语法 - 列表渲染 -- wx:for wx:key(十二)
  • 【Linux】Linux中gcc/g++的使用
  • 【Spring Cloud Alibaba】(五)Dubbo启动报错?一直重连报错?你值得学习的是排查问题的方法
  • adb命令的使用
  • springBoot自定义参数类型转换器
  • OA系统在企业中的应用你知道哪些?
  • JAVA中,ArrayList 的扩容机制,含案例
  • 供应链的有效管理,分析指标有哪些
  • 嵌入式环境配置—VMware 软件安装和虚拟机的创建
  • 阿里前端二面经典手写面试题汇总
  • 【Eye】Fake News Reading on Social Media: An Eye-tracking Study
  • 想学计算机,应该学什么专业?
  • Android逆向之旅—反编译利器Apktool使用教程
  • 色环电阻的阻值如何识别
  • Dataway 让 Spring Boot 不再需要 Controller、Service、DAO、Mapper 简单接口直接开发。
  • C#窗口介绍