常用sql注入函数
一、为什么会用到函数?
在sql注入中通常会利用注入点获取其他非授权的数据,为了使得数据能够正常逻辑下返回,不仅需要对函数进行精心构造查询语句,对于返回结果的构造也同样重要。
一个好的返回结果形式,可以避免异常告警,完整的将所需要的信息获取。
二、concat()
concat()函数是拼接多个字符串为一个字符串的函数,返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。注入中常用于可获取信息的字段进行拼接。
语法
concat(str1, str2,...)
concat(str1, seperator,str2,seperator,...)
第二种巧用拼接的性质,进行分隔符的拼接
select concat('first','second')
三、concat_ws()
同concat()函数一样,是拼接多个字符串为一个字符串的函数,但可以一次性指定分隔符。
语法
concat_ws(separator, str1, str2, ...)
select concat_ws(';','a','b','c')
四、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
SQL注入
//拼接返回三个参数,1,2为占位符
union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() --+
五、附录
参考链接: