微慑信息网

MYSQL 相关语句学习

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

 

结论:

当字符串全部为字母,则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
	)

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

 

 

 

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

 

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

 

6、MySQL文档地址:

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

 

 

 

 

 

 

赞(0) 打赏
转载请附本站链接,未经允许不得转载,,谢谢:微慑信息网-VulSee.com » MYSQL 相关语句学习

评论 抢沙发

微慑信息网 专注工匠精神

微慑信息网-VulSee.com-关注前沿安全态势,聚合网络安全漏洞信息,分享安全文档案例

访问我们联系我们

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册