文件上传全详解

前言

我们下面进行下一个漏洞——文件上传的学习。文件上传是常见漏洞之一,是Web安全必学漏洞。为探讨清楚文件上传漏洞的诸多细节,我们特以经典的upload-labs进行从入门到进阶的专项训练

作者进行upload-labs靶场练习时,在环境配置上出了很多问题,吃了很多苦头。为了防止大家踩坑,也为了节省大家的时间,在这里直接给出最简单最有效的配置方法,请见下文。

upload-labs安装与配置:upload-labs安装与配置-CSDN博客

本文是经由upload-labs训练总结而来,所以配合作者的upload-labs通关全详解食用更佳(怎么可以光学习不训练呢)

 upload-labs通关:upload-labs通关-CSDN博客

前置知识

这里大家最好还要有一些php基础,能大概读懂代码就可以;至于html之类的,大家经过之前的学习已经满足要求了。

文件上传基础

定义

文件上传是web系统中常见的一种功能,通过文件上传能实现上传图片、视频,以及其他类型的文件。

文件上传漏洞是指用户利用文件上传功能上传了一个可以执行的脚本文件,并且可以通过该文件获得服务器的权限的一种漏洞。

说白了,文件上传漏洞就是用户通过上传恶意文件去入侵服务器的一种漏洞。这个恶意文件被称为webshell,也可以称为一种网页后门。

关于webshell

  • 拥有较完整功能的webshell,我们一般称为大马。
  • 功能简易的webshell称为小马。
  • 除此之外还存在一句话木马、菜刀马、脱库马等等的名词,是对于webShell功能或者特性的简称。

一句话木马

在upload-labs中我们主要用了一句话木马,故这里对一句话木马进行简单解析。

<?php @eval($_POST['key']);?>

<?php ……?>是PHP标记,代表着这是一句PHP代码

eval()在PHP手册里的解释:

$_POST[]其实是一种全局变量

这样我们就可以综合起来看这一句话木马的含义,其实就是一句PHP代码,收集所有用POST方法传递的key的值(这个‘key’是我们任意起的名字),并将其执行

比如我们用POST方法传递一个key=phpinfo();

此时一句话木马就是<?php @eval(phopinfo(););?>

那么就会执行phpinfo()函数

然后我们还可以去进一步利用,比如通过system()函数,key=system(ipconfig);去查一下ip等等

不过最便捷的方法还是直接连接中国蚁剑,蚁剑必须要用$_POST的密码,这也是为什么我们优先用这个一句话木马。具体的连接方式请见upload-labs通关。

我们在upload-labs中还用到的

<?php @eval($_GET['key']);?>
<?php $_GET['function']($_GET['key']);?>

也都是同理。

文件上传详解

文件上传漏洞前提

  1. 文件可上传
  2. 上传路径可知
  3. 上传文件可以被解释执行或被包含

存在的风险点

所有存在文件上传的地方都可能存在相关的漏洞,都可以进行测试,比如说上传头像、上传身份认证等

文件上传测试思路及方法

对于上传点测试思路及其方法如下,

思路:

方法:

这两张图取自upload-labs出题者。

大家经过upload-labs训练,想必已经对上面的技术较为熟练了,不多赘述

参考文献

WEB入门——文件上传漏洞_htaccess文件上传漏洞-CSDN博客

文件上传漏洞全解析:策略、绕过与安全修复-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/14204.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【centOS】搭建公司内网git环境-GitLab 社区版(GitLab CE)

1. 安装必要的依赖 以 CentOS 7 系统为例&#xff0c;安装必要的依赖包&#xff1a; sudo yum install -y curl policycoreutils openssh-server openssh-clients postfix sudo systemctl start postfix sudo systemctl enable postfix2. 添加 GitLab 仓库 curl -sS https:/…

阿里云 | DeepSeek人工智能大模型安装部署

ModelScope是阿里云人工智能大模型开源社区 ModelScope网络链接地址 https://www.modelscope.cn DeepSeek模型库网络链接地址 https://www.modelscope.cn/organization/deepseek-ai 如上所示&#xff0c;在阿里云人工智能大模型开源社区ModelScope中&#xff0c;使用阿里云…

Android13-系统服务大管家-ServiceManager进程-启动篇

文章目录 关注 ServiceMager 原因ServerManager需要掌握的知识资料参考ServiceManager 进程启动启动脚本涉及到的相关源码文件源码跟踪ServiceManager脚本启动位置ServiceManager关联脚本 Native层源码分析main.cpp流程打开驱动 initWithDriverinitmakeProcessState 构造方法op…

【华为OD-E卷 - 113 跳格子2 100分(python、java、c++、js、c)】

【华为OD-E卷 - 跳格子2 100分&#xff08;python、java、c、js、c&#xff09;】 题目 小明和朋友玩跳格子游戏&#xff0c;有 n 个连续格子组成的圆圈&#xff0c;每个格子有不同的分数&#xff0c;小朋友可以选择以任意格子起跳&#xff0c;但是不能跳连续的格子&#xff…

DeepSeek-R1 云环境搭建部署流程

DeepSeek横空出世&#xff0c;在国际AI圈备受关注&#xff0c;作为个人开发者&#xff0c;AI的应用可以有效地提高个人开发效率。除此之外&#xff0c;DeepSeek的思考过程、思考能力是开放的&#xff0c;这对我们对结果调优有很好的帮助效果。 DeepSeek是一个基于人工智能技术…

npm安装electron安装报错

npm安装electron巨慢&#xff0c;报错&#xff0c;换了镜像源也不好使&#xff0c;一般都是网络超时导致的。 cmd窗口执行&#xff1a;&#xff08;打开npm的配置文件&#xff09; npm config edit在配置文件中粘贴&#xff0c;并保存&#xff1a; registryhttps://regis…

x64、aarch64、arm与RISC-V64:详解四种处理器架构

x64、aarch64、arm与RISC-V64:详解四种处理器架构 x64架构aarch64架构ARM架构RISC-V64架构总结与展望在计算机科学领域,处理器架构是构建计算机系统的基石,它决定了计算机如何执行指令、管理内存和处理数据。x64、aarch64、arm与RISC-V64是当前主流的四种处理器架构,它们在…

项目顺利交付,几个关键阶段

年前离放假还有10天的时候&#xff0c;来了一个应急项目&#xff0c; 需要在放假前一天完成一个演示版本的项目&#xff0c;过年期间给甲方领导看。 本想的最后几天摸摸鱼&#xff0c;这么一来&#xff0c;非但摸鱼不了&#xff0c;还得加班。 还在虽然累&#xff0c;但也是…

昇思打卡营第五期(MindNLP特辑)番外:硅基流动 x 华为云DeepSeek V3 API推理MindTinyRAG

1.前言 前脚&#xff0c;DeepSeek面临的巨头企业官宣加入vs多国政府下场质疑的冰火两重天局势尚未平静&#xff08;DeepSeek在美两重天&#xff1a;五大巨头接入&#xff0c;政府诚惶诚恐&#xff09;&#xff1b;后脚&#xff0c;OpenAI被逼急&#xff0c;凌晨亮出全新推理…

MYSQL索引与视图

一、新建数据库 mysql> create database mydb15_indexstu; mysql> use mydb15_indexstu; 二、新建表 &#xff08;1&#xff09;学生表Student mysql> create table Student(-> Sno int primary key auto_increment,-> Sname varchar(30) not null unique,-…

使用java代码操作rabbitMQ收发消息

SpringAMQP 将来我们开发业务功能的时候&#xff0c;肯定不会在控制台收发消息&#xff0c;而是应该基于编程的方式。由于RabbitMQ采用了AMQP协议&#xff0c;因此它具备跨语言的特性。任何语言只要遵循AMQP协议收发消息&#xff0c;都可以与RabbitMQ交互。并且RabbitMQ官方也…

介绍10个比较优秀好用的Qt相关的开源库

记录下比较好用的一些开源库 1. Qt中的日志库“log4qt” log4qt 是一个基于 Apache Log4j 设计理念的 Qt 日志记录库&#xff0c;它为 Qt 应用程序提供了强大而灵活的日志记录功能。Log4j 是 Java 领域广泛使用的日志框架&#xff0c;log4qt 借鉴了其优秀的设计思想&#xff…

【远程控制】安装虚拟显示器

todesk远程发现没显示器的机器有问题 电脑如果不外接一个显示器那么会默认为1024 768 分辨率需要安装虚拟显示器参考 竟然是一个隐私屏幕的解决方案。 虚拟显示器 Parsec-vdd 项目地址 Parsec-vdd 最大的优点是&#xff1a;支持 4K 高刷、可添加多个虚拟屏、 H-Cursor&#…

嵌入式面试题 C/C++常见面试题整理_7

一.什么函数不能声明为虚函数? 常见的不能声明为虚函数的有:普通函数(非成员函数):静态成员函数;内联成员函数;构造函数;友元函数。 1.为什么C不支持普通函数为虚函数?普通函数(非成员函数)只能被overload&#xff0c;不能被override&#xff0c;声明为虚函数也没有什么意思…

赛博算命之 ”梅花易数“ 的 “JAVA“ 实现 ——从玄学到科学的探索

hello~朋友们&#xff01;好久不见&#xff01; 今天给大家带来赛博算命第三期——梅花易数的java实现 赛博算命系列文章&#xff1a; 周易六十四卦 掐指一算——小六壬 更多优质文章&#xff1a;个人主页 JAVA系列&#xff1a;JAVA 大佬们互三哦~互三必回&#xff01;&#xf…

UNI-MOL: A UNIVERSAL 3D MOLECULAR REPRESENTATION LEARNING FRAMEWORK

UNI-MOL: A UNIVERSAL 3D MOLECULAR REPRESENTATION LEARNING FRAMEWORK Neurips23 推荐指数&#xff1a;#paper/⭐⭐⭐#​&#xff08;工作量不小) 动机 在大多数分子表征学习方法中&#xff0c;分子被视为 1D 顺序标记或2D 拓扑图&#xff0c;这限制了它们为下游任务整合…

【DeepSeek论文精读】3. DeepSeekMoE:迈向混合专家语言模型的终极专业化

欢迎关注[【AIGC论文精读】](https://blog.csdn.net/youcans/category_12321605.html&#xff09;原创作品 【DeepSeek论文精读】1. 从 DeepSeek LLM 到 DeepSeek R1 【DeepSeek论文精读】2. DeepSeek LLM&#xff1a;以长期主义扩展开源语言模型 【DeepSeek论文精读】3. DeepS…

AI 编程工具—Cursor 进阶篇 文章改写生成整理爬取

AI 编程工具—Cursor 进阶篇 文章改写生成整理爬取 其实对做自媒体的人而言,整理素材其实是一件非常耗时的事情,今天我们来看一下如何使用Cursor来帮我们解决这些问题,首先我们要建一个单独的项目,因为这个项目不涉及任何代码操作,只是文字相关的事情,还有就是这个项目需…

【Android开发AI实战】基于CNN混合YOLOV实现多车牌颜色区分且针对车牌进行矫正识别(含源码)

文章目录 引言单层卷积神经网络&#xff08;Single-layer CNN&#xff09;&#x1f4cc; 单层 CNN 的基本结构&#x1f4cc; 单层 CNN 计算流程图像 透视变换矫正车牌c实现&#x1fa84;关键代码实现&#xff1a;&#x1fa84;crnn结构图 使用jni实现高级Android开发&#x1f3…

LSSVM最小二乘支持向量机多变量多步光伏功率预测(Matlab)

代码下载&#xff1a;LSSVM最小二乘支持向量机多变量多步光伏功率预测&#xff08;Matlab&#xff09; LSSVM最小二乘支持向量机多变量多步光伏功率预测 一、引言 1.1、研究背景与意义 随着全球能源危机和环境问题的日益严重&#xff0c;可再生能源的开发利用成为了世界各国…