在我们WEB安全测试的时候,会经常使用到这一语法,因此应该透彻理解这一函数,
今天好好实践了一下,整理如下。
1.Concat函数:
concat()是一个函数,用于用于将两个字符串连接起来,形成一个单一的字符串,类似于字符串拼接;
语法:SELECT CONCAT(str1,str2,...)
执行结果:
2.实战演示:
查看
users
表下的数据
SELECT * FROM users
那么当一条语句为
SELECT username,email FROM users
就只有如下结果(仅包含
username,email
):
在渗透测试SQL注入时,如果想要
password
等敏感字段时,我们又该如何查询呐?
这里Concat函数就大显神威了,我们将
username
字段修改如下SQL语句:
SELECT CONCAT(username,password),email FROM users
在之前username字段的结果中,就同时得到了
username
和
password
的字段信息,为了阅读,清晰我们加上一个十六进制的分隔符~,其十六进制为
0x7e
,SQL语句改为:
SELECT CONCAT(username,0x7e,password),email FROM users
这样子就清晰多了!同时也可以查询多个字段了!
SELECT CONCAT(username,0x7e,VERSION()),email FROM users
3.Concat_ws()函数:
刚才有讲到分隔符便于我们的查看,
concat_ws()
函数就是方便我们的,避免在每一个字段前加上分隔符,SQL语句如下:
SELECT CONCAT_WS(0x7e,username,password,VERSION()),email FROM users
这样用着稍微方便一些~
4.Group_concat()函数
SQL语句:
SELECT GROUP_CONCAT(username),email FROM users
作用是将对应字段的所有结果都查找并组合返回到一条记录中
5.总结:
OK,就讲这么多了,希望对大家有所帮助!
*原文地址:
《SQL注入中用到的Concat函数详解-菜鸟白帽扫盲》