标签分类
技术文章
当前位置:主页 > 计算机编程 > mysql > Mysql数据库使用concat函数执行SQL注入查询

Mysql中用concat函数执行SQL注入查询的方法

  • 发布时间:
  • 作者:码农之家原创
  • 点击:110

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

这篇文章主要知识点是关于Mysql,数据库,concat函数,执行SQL注入查询,Mysql数据库使用concat函数执行SQL注入查询,mysql函数拼接查询concat函数的使用方法 的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

PHP和MySQL Web开发
PHP和MySQL Web开发中文高清第5版
  • 类型:PHP网站开发大小:27 MB格式:PDF出版:机械工业出版社作者:卢克·韦林
立即下载

更多相关的学习资源可以参阅 数据库电子书网络与数据通信电子书图形处理电子书、等栏目。

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函数拼接查询concat函数的使用方法

如下所示:

//查询表managefee_managefee的年year 和 month ,用concat函数拼成year-month。例如将2017和1 拼成2017-01。.
select CONCAT(a.year,'-',if(a.month<=9,CONCAT('0',a.month),a.month))as date,a.* from managefee_managefee as a;

//查询managefee_managefee中时间段为2017-01到2017-07的数据
select * from
(
select CONCAT(a.year,'-',if(a.month<=9,CONCAT('0',a.month),a.month))as date,a.* from managefee_managefee as a
) b
where b.date between '2017-01' and '2017-07';

以上这篇mysql函数拼接查询concat函数的使用方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。

以上就是本次给大家分享的全部知识点内容总结,大家还可以在下方相关文章里找到解决axios.interceptors.respon、 儿童python编程入门书籍推、 vue项目中使用md5加密以及、 等mysql文章进一步学习,感谢大家的阅读和支持。

上一篇:备份MySQL数据库的实例方法

下一篇:Mysql中LAST_INSERT_ID()函数使用方法总结

展开 +

收起 -

学习笔记
网友NO.123565

mysql函数拼接查询concat函数的使用方法

如下所示: //查询表managefee_managefee的年year 和 month ,用concat函数拼成year-month。例如将2017和1 拼成2017-01。.select CONCAT(a.year,'-',if(a.month=9,CONCAT('0',a.month),a.month))as date,a.* from managefee_managefee as a;//查询managefee_managefee中时间段为2017-01到2017-07的数据select * from(select CONCAT(a.year,'-',if(a.month=9,CONCAT('0',a.month),a.month))as date,a.* from managefee_managefee as a) bwhere b.date between '2017-01' and '2017-07'; 以上这篇mysql函数拼接查询concat函数的使用方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。 ……

网友NO.202639

如何修改Mysql中group_concat的长度限制

在mysql中,有个函数叫“group_concat”,平常使用可能发现不了问题,在处理大数据的时候,会发现内容被截取了,其实MYSQL内部对这个是有设置的,默认不设置的长度是1024,如果我们需要更大,就需要手工去修改 详细说明如下: 用了group_concat后,select里如果使用了limit是不起作用的. 用group_concat连接字段的时候是有长度限制的,并不是有多少连多少。但你可以设置一下。 使用group_concat_max_len系统变量,你可以设置允许的最大长度。 系统默认的分隔符是逗号 修改方式: SET [SESSION | GLOBAL] group_concat_max_len = 10240; 可修改的参数如下 GROUP_CONCAT将某一字段的值按指定的字符进行累加,系统默认的分隔符是逗号,可以累加的字符长度为1024字节。 1.先举一个简单的例子 select group_concat(f_a) from t_one group by f_b; 按f_b进行分组查询,将每组中的f_a进行累加。 2.修改默认的分隔符 select group_concat(f_a separator '_') from t_one group by f_b; separator 是一个关键字,后面跟着要进行分隔的字符 3.排序 select group_concat(f_a order by f_a separator '_') from t_one group by f_b; 4.修改默认字符大小 1) 在MySQL配置文件中加上 group_concat_max_len = 102400 #你要的最大长度 2) 可以简单一点,执行语句,可以设置作用范围 SET GLOBAL group_concat_max_len=102400; SET SESSION group_concat_max_len=102400; 5.和concat使……

网友NO.563705

mysql group_concat()函数用法总结

本文实例讲述了mysql group_concat()函数用法。分享给大家供大家参考,具体如下: group_concat(),手册上说明: 该函数返回带有来自一个组的连接的非NULL值的字符串结果 。比较抽象,难以理解。 通俗点理解,其实是这样的: group_concat()会计算哪些行属于同一组,将属于同一组的列显示出来。要返回哪些列,由函数参数(就是字段名)决定。分组必须有个标准,就是根据group by指定的列进行分组。 group_concat函数应该是在内部执行了group by语句,这是我的猜测。 1.测试语句: SELECT group_concat(town) FROM `players` group by town 结果去查找town中去查找哪些值是一样的,如果相等,就全部列出来,以逗号分割进行列出,如下: group_concat(town) 北京,北京 长沙 2.测试: SELECT group_concat( town )FROM players 结果: group_concat(town) 长沙,北京,北京, 上面是否可以证明,group_concat只有与group by语句同时使用才能产生效果? 下面进行了实际测验 3.测试常量对group_concat()的配置影响: SET @@GROUP_CONCAT_MAX_LEN=4 手册中提到设置的语法是这样的: SET [SESSION | GLOBAL] group_concat_max_len = val; 两种有什么区别? SET @@global.GROUP_CONCAT_MAX_LEN=4; global可以省略,那么就变成了:SET @@GROUP_CONCAT_MAX_LEN=4; 4.使用语句 SELECT group_concat(town) FROM `players` 结果得到: group_concat(town) 长沙,北京,长沙,北京 结论……

<
1
>

Copyright 2018-2019 xz577.com 码农之家

版权责任说明