常用sql注入函数

502 阅读1分钟

常用sql注入函数

一、为什么会用到函数?

在sql注入中通常会利用注入点获取其他非授权的数据,为了使得数据能够正常逻辑下返回,不仅需要对函数进行精心构造查询语句,对于返回结果的构造也同样重要。

一个好的返回结果形式,可以避免异常告警,完整的将所需要的信息获取。

二、concat()

concat()函数是拼接多个字符串为一个字符串的函数,返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。注入中常用于可获取信息的字段进行拼接。

语法

concat(str1, str2,...)

concat(str1, seperator,str2,seperator,...)

第二种巧用拼接的性质,进行分隔符的拼接

select concat('first','second')

1.png

三、concat_ws()

同concat()函数一样,是拼接多个字符串为一个字符串的函数,但可以一次性指定分隔符。

语法

concat_ws(separator, str1, str2, ...)

select concat_ws(';','a','b','c')

2.png

四、group__concat()

group_concat()将group by产生的同一个分组中的值连接起来,返回一个字符串结果。通过使用distinct可以排除重复值;如果希望对结果中的值进行排序,可以使用order by子句;separator是一个字符串值,缺省为一个逗号。

语法

group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符'] )

select GROUP_CONCAT(password separator ';') from users ORDER BY username

3.png

SQL注入

//拼接返回三个参数,1,2为占位符
union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() --+

五、附录

参考链接:

baijiahao.baidu.com/s?id=159534…

www.ttlsa.com/mysql/the-m…

segmentfault.com/a/119000002…