宓爰爰 发表于 7 天前

这你敢信,复习PHP意外搞出一个免杀WebShell

前言

正当我饶有性质的开始复习 PHP 开发这个课程准备一天速通期末考试的时候,没想到有心栽花花不开,无心插柳柳成因,意外灵感突发,搞出了一个还算可以的免杀的 webshell,下面讲讲思路


当打开 php 复习考点的时候,发现还要考魔术方法,于是打开了好久没有翻过的 php 手册
魔术方法是一种特殊的方法,当对对象执行某些操作时会覆盖 PHP 的默认操作。
我们看了大多数魔术方法,都有自己会在某个契机出发
比如一些常规的
__construct(mixed ...$values = ""): voidPHP 允许开发者在一个类中定义一个方法作为构造函数。具有构造函数的类会在每次创建新对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作。
会在实例化一个类的时候触发这个方法
__destruct(): voidPHP 有析构函数的概念,这类似于其它面向对象的语言,如 C++。析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。
会在对象销毁的时候执行这个方法
于是我们可以利用这个思路来实现一个命令条件执行的方法
比如看下面的例子
我们按着改造一下
读懂了原理后我们尝试看看能不能执行命令
<?php
class a{
   public function __destruct()
 {
       system("calc");
 }
}
new a();
​但是并没有计算器弹出来,原来忘了 php 一个最基础的语法,return 后代码就不会执行了
但是尝试了还是不行,最后问 GPT 写了个例子看看环境是不是有问题
页: [1]
查看完整版本: 这你敢信,复习PHP意外搞出一个免杀WebShell