SQL注入group_concat()函数是否需要使用?

我们在SQL注入的过程中,到底需不需要使用group_concat()函数?

今天在做buuctf里面的一道SQL注入的题是发现了这个问题,于是自己来记录一下。
也为了分享知识!!!
进入正题:
要弄清楚这个问题我们就需要了解group_concat()函数的作用
参考链接group_concat()函数讲解
上面说的非常清楚
总结来说就是将数据放在一起。
下面放一张自己的实验照片。方便理解。

好了现在我们知道了这个函数的作用。我们就来看看SQL注入的语句。
假如有下面的注入语句。查询password数据

1^(ascii(substr((select(password)from(admin)),1,1))>1)^1
拼接:
select * from admin where id=1^(ascii(substr((select(password)from(admin)),1,1))>1)^1;


直接报错?!哦哦原来是returns more than 1 row。
那我们想一想为什么会出现这样?
哦~~~
原来是之前的password数据有多列,SQL不知道查询那一个
这样就有俩种方法
1.添加limit 1

2.使用group_concat()函数,让password数据放在一列里面

所以如果我们不需要limit和group_concat进行查询多列数据,数据库会直接报错。
只有当数据是一列的时候才不需要使用他们。

总结:
综上所述,个人觉得进行SQL注入的时候还是添加上group_concat()函数

如果文章有错误的地方,希望大家指出,共同学习!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值