之前发的一篇,转过来。
Webshell的因素
我们从一个最简单的webshell结构可以看出其基本结构:“<?php eval($_POST[‘a’]);?>”
从目前被公布的一句话webshell来看,基本都符合这个结构,即shell的实现需要两步:数据的传递、执行所传递的数据。
数据传递&绕过检测
对于数据传递,我们通常的做法是使用$_GET、$_POST、$_SERVER、$_COOKIE等获取客户端数据。但这类关键词如果直接出现的话,那么可以很容易回溯到,我们有几种方案来解决这个问题:
利用应用本身所在框架的输入封装来得到传递的数据
采取某种变通的方式来绕过检测,譬如使用${"_G"."ET"}。不过这种方式也有自身的缺点,可以跟踪“${”;不过这种跟踪又可以通过“$/*a*/{”这种方式绕过(当然其又有被跟踪的可能性)。
使用其他数据获取方式来获取数据,譬如$_REQUEST、$GLOBALS[“_GET”]、$_FILE等。
人为构造语言缺陷或应用漏洞,并且这种缺陷是不易察觉的,譬如伪造管理员session等。
数据执行&绕过检测
对于数据执行,我们通常使用的函数或方


