sql手工注入常用函数总结


union和union all

union和union all都是联合查询,用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中,区别在于union会去除重复的结果,union all不会。

要注意的是前后两个select语句中的列数必须一致

例:

现在数据库中有两个表,分别是:users和emails. 先看下这两个表中的内容:

20190602202613.png

20190602202759.png

使用union联合查询俩个表中的id:

20190602203006.png

可看到将两个表中的id全部查了出来,并且去除了重复结果。

使用union all进行查询则不会去除重复结果,如下:

20190602203124.png

当然也可以查询两个表中不同的字段数,如下所示:

20190602203339.png

group_concat和concat

concat函数用于将多个字符串连接到一起形成一个字符串,效果如下:

20190602204111.png

group_concat函数会将要查询的结果以一个组合的形式返回,group_concat需要和group_by函数配合使用,否则会将返回结果以一行显示。

例:

20190602205545.png

20190602205616.png

除此之外还可以使用Separator关键字加分隔符:

20190602210136.png

length()

该函数用于获取字符串的长度。

例:

20190602225638.png

mid()

SQL MID() 函数用于得到一个字符串的一部分。这个函数被MySQL支持,但不被MS SQL Server和Oracle支持。在SQL Server, Oracle 数据库中,我们可以使用 SQL SUBSTRING函数或者 SQL SUBSTR函数作为替代。

MID() 函数语法为:

SELECT MID(ColumnName, Start [, Length]) FROM TableName

例:

20190602230242.png

left()

LEFT()函数是一个字符串函数,它返回具有指定长度的字符串的左边部分。

用法:

LEFT(str,length);

LEFT()函数接受两个参数:

  • str是要提取子字符串的字符串。
  • length是一个正整数,指定将从左边返回的字符数。

LEFT()函数返回str字符串中最左边的长度字符。如果str或length参数为NULL,则返回NULL值。

如果length为0或为负,则LEFT函数返回一个空字符串。如果length大于str字符串的长度,则LEFT函数返回整个str字符串。

请注意,SUBSTRING(或SUBSTR)函数也提供与LEFT函数相同的功能。

例:

20190602231015.png

substr()

substr和mid函数的作用和用法基本相同,只不过substr支持的数据库更多,mid只支持mysql数据库。

用法:

substr(string string,num start,num length);

例:

20190602231644.png

ascii()

ascii函数用来返回字符串str的最左面字符的ASCII代码值。如果str是空字符串,返回0。如果str是NULL,返回NULL。这个函数可以和substr函数配合来使用猜测一个字符。

例:

20190602232248.png

sleep()

sleep函数可以让sql执行的时候暂停一段时间,函数的返回结果为0.

例:

20190602232809.png

if(expr1,expr2,expr3)

语法如下:

IF(expr1,expr2,expr3),如果expr1的值为true,则返回expr2的值,如果expr1的值为false,则返回expr3的值。

例:

20190602233337.png

count()

count函数是用来统计表中或数组中记录的一个函数,下面我来介绍在MySQL中count函数用法与性能比较吧。count(*) 它返回检索行的数目, 不论其是否包含 NULL值。

20190602233736.png

load_file()

load_file()可以用来读取文件,此函数的执行必须使用dba权限或者root权限。

需要注意的是:

mysql 新版本下secure-file-priv字段 : secure-file-priv参数是用来限制LOAD DATA, SELECT … OUTFILE, and LOAD_FILE()传到哪个指定目录的。

  • ure_file_priv的值为null ,表示限制mysqld 不允许导入,导出
  • 当secure_file_priv的值为/tmp/ ,表示限制mysqld 的导入,导出只能发生在/tmp/目录下
  • 当secure_file_priv的值没有具体值时,表示不对mysqld 的导入,导出做限制

如何查看secure-file-priv参数的值:

show global variables like '%secure%';

20190602234516.png

into outfile()

into outfile()函数可以将字符串写入文件,此函数的执行也需要很大的权限,并且目标目录可写。


文章作者: darkless
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 darkless !
评论
 上一篇
实验演示DHCP攻击与防护 实验演示DHCP攻击与防护
关于DHCP的各种攻击介绍可参考之前的一篇文章DHCP snooping总结,本文重点以实验的方式来演示DHCP的攻击与防御😊。 实验拓扑 实验模拟器使用的是GNS3,路由器及交换机为思科设备,DHCP服务器为winserver2008,
2019-07-03
下一篇 
拉勾网反爬虫解决方法 拉勾网反爬虫解决方法
这两天看了一篇文章是写爬取拉勾网职位信息的,看了以后想自己也尝试下。可能是拉钩网加了反爬,网上的大部分方法已经不能用了,我自己研究了下它的反爬措施,找出应对的方法即可完成爬取。 拉开拉钩随便搜索一个职位信息,F12查看请求与响应。 可在一个
  目录