异或注入

原理

异或是一种逻辑运算,运算法则简言之就是:两个条件相同(同真或同假)即为假(0),两个条件不同即为真(1),null与任何条件做异或运算都为null,如果从数学的角度理解就是,空集与任何集合的交集都为空。
mysql里异或运算符为^ 或者 xor
两个同为真的条件做异或,结果为假


两个同为假的条件做异或,结果为假

一个条件为真,一个条件为假,结果为真


null与任何条件(真、假、null)做异或,结果都为null

xor与^区别(基于bugku多次)

  • ^运算符会做位异或运算 如1^2=3 1^2=3


  • xor做逻辑运算 1 xor 0 会输出1 其他情况输出其他所有数据

用处

可用于判断过滤
http://120.24.86.145:9004/1ndex.php?id=1'^(length('union')=5)%23
当union被过滤时1^0 输出id=1
当union没被过滤时 1 ^ 1 输出 id=0
回显 error

推荐阅读更多精彩内容