webshell免杀之数据特征绕过

1.$_xxx[xxx] 绕过:

看这个特征可以发现很明显的是一个获取参数的语句,但为什么我会将起列举出来了,因为在很多情况下,现在的web应用大多都是使用的框架,基本上所有的获取请求参数内容的方法都是经过框架封装过的,最原始的获取参数内容的方式已经非常少见了,很容易通过一些命令如linux下的find命令通过正则表达式即可找到对应的webshell,很容易被发现,因此不使用该特征是很有必要的

1.1 {}

使用{}来替代[]是在ctf中十分常见的绕过方式

webshell免杀之数据特征绕过_第1张图片

webshell免杀之数据特征绕过_第2张图片

1.2 foreach语句

利用复合变量加foreach,获取参数中的内容,其特点并没有[],不容易被识别

webshell免杀之数据特征绕过_第3张图片

webshell免杀之数据特征绕过_第4张图片

自定义请求头

使用自定义的请求头同样是没有上面的特征

webshell免杀之数据特征绕过_第5张图片

webshell免杀之数据特征绕过_第6张图片

2.(xxx) 绕过:

这个特征大致就是某盾,某狗等的正则表达式匹配的内容,只要去消除此特征即可免杀

2.1 ""特性

该原理就是""中的变量不会被当做字符串使用,会被解析,经过测试该方法基本失效


2.2 回调函数

webshell免杀之数据特征绕过_第7张图片

webshell免杀之数据特征绕过_第8张图片

2.3 魔术常量

可以用到的4种魔术常量

webshell免杀之数据特征绕过_第9张图片

webshell免杀之数据特征绕过_第10张图片

webshell免杀之数据特征绕过_第11张图片

webshell免杀之数据特征绕过_第12张图片

webshell免杀之数据特征绕过_第13张图片

webshell免杀之数据特征绕过_第14张图片

webshell免杀之数据特征绕过_第15张图片

webshell免杀之数据特征绕过_第16张图片

webshell免杀之数据特征绕过_第17张图片以上的4种基于魔术常量的免杀webshell都是可以绕过某盾的

webshell免杀之数据特征绕过_第18张图片

当然在实战种还是要像上一篇文章一样,将传入的参数进行加密处理,如果再把传参方式改为cookie的那就很完美了

2.4 自定义常量

webshell免杀之数据特征绕过_第19张图片

webshell免杀之数据特征绕过_第20张图片

webshell免杀之数据特征绕过_第21张图片

2.5 分离免杀

顾名思义,就是将一个马拆分成两部分,及使用file_get_contents()将内容读取出来,为什么不使用include等这些文件包含函数了?因为webshell的免杀在于动态函数的调用,最终还是要拼接在一起,绕过的原则其实就是绕过waf的正则表达式,如果直接include其实和写在一个文件里没啥区别

webshell免杀之数据特征绕过_第22张图片webshell免杀之数据特征绕过_第23张图片

webshell免杀之数据特征绕过_第24张图片

webshell免杀之数据特征绕过_第25张图片

2.6 注释及空白符混淆

这种方式和sql注入差不多,原理就是php允许在括号中添加注释符和空白符并不会影响代码正常运行

webshell免杀之数据特征绕过_第26张图片

webshell免杀之数据特征绕过_第27张图片

webshell免杀之数据特征绕过_第28张图片

这里方式可以绕某狗,但过不了某盾

2.7 反射调用

反射类及反射类方法

webshell免杀之数据特征绕过_第29张图片

通过属性名免杀

webshell免杀之数据特征绕过_第30张图片

webshell免杀之数据特征绕过_第31张图片

通过注释免杀

webshell免杀之数据特征绕过_第32张图片

webshell免杀之数据特征绕过_第33张图片

2.8 类调用

类方法调用

webshell免杀之数据特征绕过_第34张图片

webshell免杀之数据特征绕过_第35张图片

webshell免杀之数据特征绕过_第36张图片

类的静态方法

webshell免杀之数据特征绕过_第37张图片

webshell免杀之数据特征绕过_第38张图片

你可能感兴趣的:(学习,网络,安全)