使用XOR异或绕过WAF拦截:XORpass

XORpass

XORpass是使用XOR异或操作绕过WAF过滤器的编码器,基于PHP XOR异或

安装和使用

git clone https://github.com/devploit/XORpass
cd XORpass

$ php encode.php STRING
$ php decode.php "XORed STRING"

bypass示例

使用常规方式执行命令:被waf拦截

使用XOR异或绕过WAF拦截:XORpass

使用XOR bypass绕过WAF执行命令,成功绕过

$ php encode.php system # return A
$ php encode.php ls # return B

payload == A(B)
使用XOR异或绕过WAF拦截:XORpass
XORpass XOR绕过WAF

PHP为什么将payloads视为字符串?

^是互斥或运算符,这意味着我们实际上正在使用二进制值。因此,让我们分解发生的事情。

二进制值的XOR异或运算符将返回1,其中只有一位为1,否则返回0(0 ^ 0 = 0,0 ^ 1 = 1,1 ^ 0 = 1,1 ^ 1 = 0)。对字符使用XOR异或时,将使用其ASCII值。这些ASCII值是整数,因此我们需要将其转换为二进制值以查看实际情况。

A = 65 = 1000001
S = 83 = 1010011
B = 66 = 1000010

A 1000001
^
S 1010011
^
B 1000010
----------------
result0010010 = 80 = P

A^S^B = P

如果我们做一个'echo“ A” ^“ S” ^“ B”;'如我们所见,PHP将为我们返回P。

使用XOR异或绕过WAF拦截:XORpass