Mysql数据库使用concat函数执行SQL注入查询

 更新时间:2015年04月09日 10:04:08   投稿:junjie  
这篇文章主要介绍了Mysql数据库使用concat函数执行SQL注入查询,concat函数在SQL注入查询中会有意想不到的作用,本文就起讲解它的使用,需要的朋友可以参考下

SQL注入语句有时候会使用替换查询技术,就是让原有的查询语句查不到结果出错,而让自己构造的查询语句执行,并把执行结果代替原有查询语句查询结果显示出来。

例如:原本查询语句是

复制代码 代码如下:

select username,email,content from test_table where user_id=uid;

其中uid,是用户输入的。正常显示结果会出现用户名,用户邮箱,用户留言内容。但是如果uid过滤不严,我们可以构造如下SQL语句来获得任意数据表信息。
复制代码 代码如下:

uid=-1 union select username ,password,content from test_talbe where user_id=管理员id;

实际执行就是
复制代码 代码如下:

select username,email,content from test_table where user_id=-1 union select username ,password,content from test_talbe where user_id=管理员id;

其中显示正常用户emai的地方,变成了显示管理员的密码了。

但是,往往事情并不是这么简单,首先要找到漏洞,其次构造这种语句时候要考虑各个字段的类型,让int或samllint类型的字段显示varchar显然不合适。最后就是本文要说的。

如果出现问题的SQL语句只有一个或两个字段怎么办,我们想知道很多东西,一两个字段太少了,远远不能满足我们的需要。那么我们可以使用concat函数。

concat函数本来是这样用的SELECT CONCAT('My', 'S', 'QL');执行结果是'MySQL'。也就是连接作用的。我们利用它来为我们服务,

复制代码 代码如下:

uid=-1 union select username ,concat(password,sex,address,telephone),content from test_talbe where user_id=管理员id;

这个语句实际查询了六个字段,但是显示的时候,把password,sex,address,telephone等字段合在一起,显示在原本应该显示email的地方。

更好的方法:中间用分隔符分开:

复制代码 代码如下:

uid=-1 union select username ,concat(password,0×3a,sex,0×3a,address,0×3a,telephone) ,content from test_talbe where user_id=管理员id;

其中0×3a是“:”的十六进 制形式。

相关文章

  • mysql:Can''t start server: can''t create PID file: No space left on device

    mysql:Can''t start server: can''t create PID file: No space

    这篇文章主要介绍了mysql启动失败不能正常启动并报错Can't start server: can't create PID file: No space left on device问题解决方法,需要的朋友可以参考下
    2015-05-05
  • Linux下二进制方式安装mysql5.7版本和系统优化的步骤

    Linux下二进制方式安装mysql5.7版本和系统优化的步骤

    这篇文章主要介绍了Linux下二进制方式安装mysql5.7版本和系统优化的步骤,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • MySQL查看与修改当前数据库编码的方法

    MySQL查看与修改当前数据库编码的方法

    这篇文章主要介绍了MySQL查看与修改当前数据库编码的方法,需要的朋友可以参考下
    2016-04-04
  • MySQL中按照多字段排序及问题解决

    MySQL中按照多字段排序及问题解决

    这篇文章主要介绍了MySQL中按照多字段排序及问题解决的方法,非常的实用,有需要的小伙伴可以参考下。
    2015-03-03
  • Centos 6.5 下安装mysql 5.6.21的方法

    Centos 6.5 下安装mysql 5.6.21的方法

    本文给大家带来Centos 6.5 下安装mysql 5.6.21的方法,操作方法比较简单,介绍的非常详细,感兴趣的朋友可以参考下操作步骤
    2016-09-09
  • SQL计算timestamp的差值的方法

    SQL计算timestamp的差值的方法

    这篇文章主要介绍了SQL计算timestamp的差值的方法的相关资料,需要的朋友可以参考下
    2017-05-05
  • 快速理解MySQL中主键与外键的实例教程

    快速理解MySQL中主键与外键的实例教程

    这篇文章主要介绍了MySQL中主键与外键的区别和联系,是MySQL入门学习中的基础知识,需要的朋友可以参考下
    2015-11-11
  • mysql 数据汇总与分组

    mysql 数据汇总与分组

    这篇文章主要介绍了mysql 数据汇总与分组,我们经常需要汇总数据而不用把它们实际检索出来,为此MySQL提供了专门的函数。使用这些函数,MySQL查询可用于检索数据,以便分析和报表生成。下面来看看具体例子,需要的朋友可以参考一下
    2021-10-10
  • 一次mysql迁移的方案与踩坑实战记录

    一次mysql迁移的方案与踩坑实战记录

    这篇文章主要给大家介绍了一次mysql迁移的方案与踩坑的相关资料,MySQL迁移是DBA日常维护中的一个工作,迁移究其本义,无非是把实际存在的物体挪走,保证该物体的完整性以及延续性,需要的朋友可以参考下
    2021-08-08
  • MySQL预编译功能详解

    MySQL预编译功能详解

    这篇文章主要为大家详细介绍了MySQL预编译功能的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10

最新评论