首页
社区
课程
招聘
[原创]利用php新特性过静态查杀
发表于: 2020-3-1 13:03 3831

[原创]利用php新特性过静态查杀

2020-3-1 13:03
3831

由于前两天发在了我的博客上,因此马可能已经被杀了,重要的是思路而已。

最近在研究webshell免杀,抽出心得的一个新颖的点。原因是突然想到既然php7.1不能利用可变函数的assert,那就利用php7的新特性来绕过查杀正则,最终绕过某盾和“某d0g”。

实验环境在7.1.9,所有马儿在php7以下的环境均不能使用。

D盾规则库(最新):20191227

某d0g(apache版本)因为可能会因为用其产品测试,导致侵权行为,为了防止被举报所以就不放图了。

首先以下代码

直接误报了。

因此,直接传参到eval里面是不现实的。

所以接下来我们要利用函数,配合php新特性来绕过它。

而对于某d0g,只要以下代码

就会让其误报。

因此在写免杀马的时候,post中的变量,不要出现在eval中的字符串中。就像上面b一样,尽管他在eval中是以变量的形式出现的。

有了这个基础就可以进入正题了

php手册-php7.0.x新特性

php7增加了返回值类型声明的支持,在定义函数时增加一个 :类型便可以了。

例如:

就是函数返回值类型要为int。否则会强制转换或者显示语法错误。

如果未更新此特性的查杀软件,就会不认识此函数,导致被绕过。

例如:

可以用查杀软件测试一下。

发现没有被检测到。

可以使用。

由于日常使用中存在大量同时使用三元表达式和 isset()的情况, 添加了null合并运算符 (??) 这个语法糖。如果变量存在且值不为NULL, 它就会返回自身的值,否则返回它的第二个操作数

简单来说:

如果运用 ??符号,查杀软件不会理解着个处理过程 ,可能就会导致绕过。

就像以下代码就可以绕过某d0g

再利用函数调用一下


可以发现已经过了D盾

测试一下可用性

接下来看看7.1的特性吧

php手册-php7.0.x新特性

比7.1的特性多了个 函数返回值若不是给定类型,则为空。

使用同样的代码:

不出意外


过了D盾

这里选用中括号 []类型的列表来演示。

这样,就把数组的值分别赋给了$c,$d.$c='a';$d='b';

这样,就可以用这个少用的特性,来绕过静态查杀

首先写一个最简单的:

然后就过了某d0g。自行测试。

之后就可以配合函数。就像这样:

查杀一下


测试可用性

这个很绕,看一下例子也许就会明白了。

eg:

稍微改改就能过某d0g(自行测试):

试试D盾

报了一级

再次借助自定义函数。

成功过D,测试可用性。

官方说明:

这个在小于7.1版本中,负的偏移量返回空字串。

eg:

7.1.x中返回 s,但是以前的版本中 返回 string(0) ""

思路:

我们可以这个拆分字符串,使规则识别不出来。最后再配合php的可变变量:

这样就可以过某d0g了。但是对于D盾来说,会识别拼接字符,和可变变量。报一级可疑文件,不得不说这点做的确实很好。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2020-3-1 13:04 被孑狱天编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 83
活跃值: (1087)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
2
牛逼
2020-3-1 15:06
0
雪    币: 2510
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
感谢分享
2020-3-11 12:53
0
雪    币: 1225
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
2020-3-11 23:31
0
雪    币: 97
活跃值: (50)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
eval 给禁了呢?
2021-7-8 00:07
0
雪    币: 1428
活跃值: (707)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
学习了
2021-9-16 09:56
0
雪    币: 20
活跃值: (21)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
有在研究这方面的同学吗一起搞个群交流呀
2021-10-27 15:59
0
游客
登录 | 注册 方可回帖
返回
//