文件上传漏洞详细利用流程
一、了解基本术语
1、后门
像房子一样,前门后门都可以进出房子,而较之前门,后门更具有隐蔽性。电脑技术中的后门是抽象概念,意指隐蔽性高或不常用的,区别于常规操作所使用的一种出入口。现金网络后门形形色色,而最多的还是两类,一种是基于web类的webshell,另一种则是基于系统类的网上说的“灰鸽子”之类的软件。
“后门”有些贬义,网上的正面称呼应是“远程管理工具”,现在一般网管对远程网站进行维护管理,就通过类似功能的工具来操作,所以,可以理解为后门是双刃剑的典型黑客技术,因为它也可以作为黑客控制网站后日后进出网站的方便之门。
而在文件上传漏洞利用中,其中一种后门webshell发挥着极大的作用,下面我大概描述一下我了解到的webshell
2、webshell
网上的文字那么大一堆,总结下来就是webshell是使用ASP、PHP或JSP
脚本编码的木马后门,即这些脚本文件是基于web服务开放的服务器才有效。而它最大的优点是可以通过防火墙的拦截,而且更具有隐蔽性。
因为通常的木马后门在控制者控制服务器时会留下大量日志文件;而webshell只会在WEB
日志留痕迹。(WEB日志因其具有庞大性和较差的可阅读性导致管理员容易忽略此项检查,所以1不用太过担心)
webshell的作用简化下来将大概就是当黑客入侵一台WEB服务器时,放一个wbshell,一边下次进入。webshell功能多,可上传、下载文件,如果权限大,可执行系统命令。
可见webshell的重要性(当获得了webshell,对黑客:快要沦陷一台服务器的标志;对管理员:受到极大的威胁)无论是渗透还是文件上传漏洞的利用,webshell都非常重要
二、文件上传漏洞的利用流程
1、找到文件上传的位置
在一个web网站里面靠找到菜单链接的位置,一个个来点击找到文件上传的位置,或者如果能拿到源码的话可以搜索upload等关键字来寻找。还有一种是该web网站真的没有文件上传的位置或没有提供文件上传的接口该怎么办?该怎么把一句话木马放到该web系统里面呢,我也不清楚还有这样的文件上传,但在网上找到了解决办法:
<1>通过Redis向服务器里面写入一句话木马内容
常见的一句话木马为<?php @eval($_POST['a']);?>
利用Redis的持久化的功能和未授权访问漏洞(没有配置密码)这时候连接到它就可以访问里面的内容内存的内容又会通过一个文件同步到磁盘里,这时候只需要在Redis的KV系统里面写入一句话木马的内容,当它保存到磁盘里面时,一句话木马便跟随写入
<2>MySQL
MySQL具有读写文件的功能 select into file...,如果其参数配置允许向任意目录写入文件且我们刚好在服务器上面找到web路径的地址,这时候就可以利用MySQL把一句话木马写入这个web网站(SQl注入能学到,目前还没深究,只是先了解到了有这么个途径)
<3>CMS系统
其官网下载的速度非常慢,可以自己写一个小马,然后把下载的CMS系统打包进去放入某一个地方(如百度网盘)给“别人”下载,一旦别人下载和运行这个程序,那就有了这样的一个小马运行程序 或者干脆不用小马,直接把一句话木马放入某一个可以访问的路径。但这些方法或许更适用于以后对各方面知识都熟悉了的实战,总之网上的方法有很多,我只记录下了我觉得有一丝和易于理解的几种,方便以后深挖时回来提供思路
总而言之,必须要有文件上传的功能才能写入一句话木马
而在找文件上传路径时要一个个去点和看效率非常低,这里在一位博主那里得到了一个Github上面的工具:https://github.com/almandin/fuxploider
该工具可自动扫描一个项目里存在文件上传的地方,检测文件上传的表单,然后发现有没有可以利用文件上传的漏洞
2、尝试绕过校验,上传文件
<1>删除/禁用JS(前段JavaScript脚本)
步骤:打开设置,进入站点权限,禁用JavaScript,验证效果。注意:禁用可能影响网页功能,建议临时使用,关注版本更新,且在使用完之后开启。
<2>通过抓包修改MIME类型(如果用Content-Type来判断)
例题.Upload-labs pass-02
根据提示可以知道,是在服务端对数据的MIMI进行检查,MIMI验证就是验证文件的类型

所以思路就是bp抓包修改文件类型
修改Content-Type,而根据查看源码可以看到允许上传的类型有三种:image/jpeg image/png image/gif,所以改为其中一种就可以了
放行后回到主页复制图片地址
然后访问得到所有有关php信息
<3>等价扩展名
apache中的配置文件中,可以看到会将.php .php3 .phtml这几个后缀当做php文件进行解析,然后我们在上传文件时就可以将后缀改为在黑名单之外的等价拓展名用来绕过黑名单
<4>大小写绕过
观察黑名单里是否仅过滤纯大写或纯小写时也可以更换大小写绕过
<5>htaccess(Apache解析漏洞)
.htaccess参数常见的配法有三种
1.AddHandler php5-script .jpg 2.AddType application/x-httpd-php .jpg
3.Sethandler application/x-httpd-php
而Sethandler 是将该目录及子目录的所有文件均映射为php文件类型;
Addhandler是使用 php5-script 处理器来解析所匹配到的文件;
AddType是 将特定扩展名文件映射为php文件类型。
也就是说可以将我们上传的文件解析成php
<6>空格、点、::$DATA(利用操作系统的特性)
windows环境下,系统会自动除去文件名后面的字符串::$DATA、点和空格,但在linux下不会,linux环境下会保留文件名的特殊字符。那就可以利用搭建在windows上的环境,抓包后在文件名后加例如空格,正好就可以绕过过滤数(winndows自动帮我去除空格)
<7>%00截断、0x00截断(利用代码、程序语言的特性)
当 PHP 在处理文件名或路径时,如果遇到 URL 编码的 %00,它会被解释为一个空字节(ASCII 值为 0)。在php5.3以前,PHP 会将这个空字节转换为 \000 的形式。
而恰恰在php5.3以前,文件名出现\0000,会导致文件名被截断,只保留%00之前的部分。这样的情况可能会导致文件被保存到一个意外的位置,从而产生安全风险
这是因为php语言的底层是c语言,而\0在c语言中是字符串的结束符,所以导致00截断的发生
<8>图片马(允许上传图片,没有对图片内容进行检查)
<9>条件竞争
如果删除是需要时间时,就可以直接先准备一个新的一句话木马的php文件。
3、获得文件位置
相较与其他web网站,upload-labs靶场算比较友好的,因为它是让传图片,然后把图片的真实路径显示出来,我们可以直接得到。但有的系统便会隐藏路径,那就需要我们想办法去得到,我这方面的知识就挺欠缺的,之前做过的很多题就是噶在获取不到隐藏文件路径的位置
这里如果文件路径没有返回(找不到它的位置)该怎么办:
(1)如果它是开源的cms,它的位置是固定的,即使我们不知道,那么就可以做代码审计
(2)可以做文件变动的监视器,也能得到文件位置(当然这是大佬干的事,我只是了解一下)
还有就是当这个文件没有执行的权限(向百度网盘或csdn上传的文件,当动态访问时它只会重新编码后才返回给我们这样就是完完全全被编码成全文本是根本没办法的)
4、蚁剑连接,管理文件
这里有一个题在我前两天的《学到什么记什么》里也记录过让我对蚁剑有点模糊的地方,尝试蚁剑,本来url拼接我怎么都连不上,后来意识到刚访问图片都没拼接主要网址,而是只单独访问图片地址,所以就单独用图片地址就连上了,密码么,我发现a也可以cmd也可以这个就不清楚为什么

之前一直以为连蚁剑的密码跟上传的木马中【" "】中的字符有关,不过这题的木马都没有上传这种新式的,还能连上,而且密码不限 ...然后...没错,我又随便输入了一下发现abc也可以,

em,难道上传的木马没有“密码”所以都可以连?就像手机没有设置锁屏密码一样谁都能打开?这个问题暂时没有弄懂,改日懂了再回来解答。
然后连上的还是可以查看信息管理文件的。

相关文章:
文件上传漏洞详细利用流程
一、了解基本术语 1、后门 像房子一样,前门后门都可以进出房子,而较之前门,后门更具有隐蔽性。电脑技术中的后门是抽象概念,意指隐蔽性高或不常用的,区别于常规操作所使用的一种出入口。现金网络后门形形色色&#x…...
蓝桥与力扣刷题(蓝桥 旋转)
题目:图片旋转是对图片最简单的处理方式之一,在本题中,你需要对图片顺时针旋转 90 度。 我们用一个 nm的二维数组来表示一个图片,例如下面给出一个 34 的 图片的例子: 1 3 5 7 9 8 7 6 3 5 9 7 这个图片顺时针旋转…...
transformer架构解析{掩码,(自)注意力机制,多头(自)注意力机制}(含代码)-3
目录 前言 掩码张量 什么是掩码张量 掩码张量的作用 生成掩码张量实现 注意力机制 学习目标 注意力计算规则 注意力和自注意力 注意力机制 注意力机制计算规则的代码实现 多头注意力机制 学习目标 什么是多头注意力机制 多头注意力计算机制的作用 多头注意力机…...
使用DiskGenius工具来实现物理机多硬盘虚拟化迁移
使用DiskGenius工具来实现物理机多硬盘虚拟化迁移 概述准备工作注意事项实操过程记录1、Win7虚拟机,安装有两个硬盘(硬盘0和硬盘1),各分了一个区,磁盘2是一块未使用的磁盘2、运行DiskGenius程序,记录现有各…...
iOS安全和逆向系列教程 第5篇 iOS基础开发知识速览 - 理解你要逆向的目标
iOS安全和逆向系列教程 第5篇 iOS基础开发知识速览 - 理解你要逆向的目标 正如上一篇文章结尾所预告的,在完成环境搭建后,我们需要了解iOS开发的基础知识。这不是要求你成为一名iOS开发者,而是为了让你在逆向分析过程中能够理解应用的代码结…...
计算机常用单词
文章目录 计算机单词1-100101-200201-300301-400401-500501-600601-700701-800801-900901-10001001-11001101-12001201-13001301-14001401-15001501-16001601-1695 计算机单词 参考 1-100 1. file [英faɪl 美faɪl] n. 文件;v. 保存文件 2. command [英kəˈmɑ…...
TS的接口 泛型 自定义类型 在接口中定义一个非必须的属性
TS的接口 泛型 自定义类型 接口 新建一个ts文件,在里面定义一个接口 export interface PersonInter{id:string,name:string,age:number }在vue文件中引入这个ts文件 <script lang"ts" setup name"Person">import {type PersonInter} …...
76.读取计时器运行时间 C#例子 WPF例子
TimerManager:一个增强的定时器类,带时间管理功能 在使用定时器时,我们常常需要知道定时器的运行状态,比如它已经运行了多久,或者还剩下多少时间。然而,.NET 的 System.Timers.Timer 类本身并没有直接提供…...
React封装通用Table组件,支持搜索(多条件)、筛选、自动序号、数据量统计等功能。未采用二次封装调整灵活,包含使用文档
封装通用组件 一、封装思想二、react代码三、css代码四、实现效果五、使用文档 BasicTableModal 表格模态框组件1.组件简介2.功能特点3.使用方法基础用法宽度控制示例带筛选功能搜索功能示例自定义单元格渲染 4.API 说明PropsColumn 配置项Filter 配置项 5.注意事项 一、封装思…...
【JavaEE】-- 多线程(初阶)4
文章目录 8.多线程案例8.1 单例模式8.1.1 饿汉模式8.1.2 懒汉模式 8.2 阻塞队列8.2.1 什么是阻塞队列8.2.2 生产者消费者模型8.2.3 标准库中的阻塞队列8.2.4 阻塞队列的应用场景8.2.4.1 消息队列 8.2.5 异步操作8.2.5 自定义实现阻塞队列8.2.6 阻塞队列--生产者消费者模型 8.3 …...
WP 高级摘要插件:助力 WordPress 文章摘要精准自定义显示
wordpress插件介绍 “WP高级摘要插件”功能丰富,它允许用户在WordPress后台自定义文章摘要。 可设置摘要长度,灵活调整展示字数;设定摘要最后的显示字符, 如常用的省略号等以提示内容未完整展示;指定允许在摘要中显示…...
论文阅读 EEG-Inception
EEG-Inception: A Novel Deep Convolutional Neural Network for Assistive ERP-Based Brain-Computer Interfaces EEG-Inception是第一个集成Inception模块进行ERP检测的模型,它有效地结合了轻型架构中的其他结构,提高了我们方法的性能。 本研究的主要目…...
FFmpeg入门:最简单的音频播放器
FFmpeg入门:最简单的音频播放器 欢迎大家来到FFmpeg入门的第二章,今天只做一个最简单的FFmpeg音频播放器;同样,话不多说,先上流程图 流程图 以上流程和视频播放器的解码过程基本上是一致的; 不同点在于 S…...
物联网感应层数据采集器实现协议转换 数据格式化
数据采集器的核心功能实现涉及多个技术层面的协同工作,以下是各模块的详细实现解析: 协议转换实现 协议解析引擎:采用插件式架构,例如: P r o t o c o l P a r...
基于Linux系统的物联网智能终端
背景 产品研发和项目研发有什么区别?一个令人发指的问题,刚开始工作时项目开发居多,认为项目开发和产品开发区别不大,待后来随着自身能力的提升,逐步感到要开发一个好产品还是比较难的,我认为项目开发的目的…...
8.1.STM32_OLED
4.STM32_OLED 跟着江协科大的视频,无法点亮OLED屏幕解决办法 每个人使用的0.96寸OLED屏幕信号不一样,存在很多兼容性问题 归根结底就是驱动的问题! 本人的OLED是SSD1306,在淘宝店铺找了驱动文件后成功点亮,示例见文末 请针对自…...
Netty笔记9:粘包半包
Netty笔记1:线程模型 Netty笔记2:零拷贝 Netty笔记3:NIO编程 Netty笔记4:Epoll Netty笔记5:Netty开发实例 Netty笔记6:Netty组件 Netty笔记7:ChannelPromise通知处理 Netty笔记8…...
【算法方法总结·三】滑动窗口的一些技巧和注意事项
【算法方法总结三】滑动窗口的一些技巧和注意事项 【算法方法总结一】二分法的一些技巧和注意事项【算法方法总结二】双指针的一些技巧和注意事项【算法方法总结三】滑动窗口的一些技巧和注意事项 【滑动窗口】 数组的和 随着 右边指针 移动一定是 非递减 的,就是 …...
LabVIEW虚拟弗兰克赫兹实验仪
随着信息技术的飞速发展,虚拟仿真技术已经成为教学和研究中不可或缺的工具。开发了一种基于LabVIEW平台开发的虚拟弗兰克赫兹实验仪,该系统不仅能模拟实验操作,还能实时绘制数据图形,极大地丰富了物理实验的教学内容和方式。 …...
spring boot + vue 搭建环境
参考文档:https://blog.csdn.net/weixin_44215249/article/details/117376417?fromshareblogdetail&sharetypeblogdetail&sharerId117376417&sharereferPC&sharesourceqxpapt&sharefromfrom_link. spring boot vue 搭建环境 一、浏览器二、jd…...
清华团队提出HistoCell,从组织学图像推断超分辨率细胞空间分布助力癌症研究|顶刊精析·25-03-02
小罗碎碎念 今天和大家分享一篇2025-02-21发表于nature communications的文章,内容涉及病理空转单细胞。 从组织学图像推断细胞空间分布对癌症研究意义重大,但现有方法存在标注工作量大、分辨率或特征挖掘不足等局限。研究旨在开发一种高效准确的方法。 …...
分布式锁—2.Redisson的可重入锁一
大纲 1.Redisson可重入锁RedissonLock概述 2.可重入锁源码之创建RedissonClient实例 3.可重入锁源码之lua脚本加锁逻辑 4.可重入锁源码之WatchDog维持加锁逻辑 5.可重入锁源码之可重入加锁逻辑 6.可重入锁源码之锁的互斥阻塞逻辑 7.可重入锁源码之释放锁逻辑 8.可重入锁…...
html+js 轮播图
<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>轮播图示例</title><style>/* 基本样式…...
vue3:初学 vue-router 路由配置
承上一篇:nodejs:express js-mdict 作为后端,vue 3 vite 作为前端,在线查询英汉词典 安装 cnpm install vue-router -S 现在讲一讲 vue3:vue-router 路由配置 cd \js\mydict-web\src mkdir router cd router 我还…...
23种设计模式之《备忘录模式(Memento)》在c#中的应用及理解
程序设计中的主要设计模式通常分为三大类,共23种: 1. 创建型模式(Creational Patterns) 单例模式(Singleton):确保一个类只有一个实例,并提供全局访问点。 工厂方法模式࿰…...
Python 爬取唐诗宋词三百首
你可以使用 requests 和 BeautifulSoup 来爬取《唐诗三百首》和《宋词三百首》的数据。以下是一个基本的 Python 爬虫示例,它从 中华诗词网 或类似的网站获取数据并保存为 JSON 文件。 import requests from bs4 import BeautifulSoup import json import time# 爬取…...
C语言408考研先行课第一课:数据类型
由于408要考数据结构……会有算法题…… 所以,需要C语言来进行一个预备…… 因为大一贪玩,C语言根本没学进去……谁能想到考研还用得到呢?【手动doge(bushi) 软件用的是Clion,可以自行搜索教程下载使用。…...
03 HarmonyOS Next仪表盘案例详解(二):进阶篇
温馨提示:本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦! 文章目录 前言1. 响应式设计1.1 屏幕适配1.2 弹性布局 2. 数据展示与交互2.1 数据卡片渲染2.2 图表区域 3. 事件处理机制3.1 点击事件处理3.2 手势…...
探秘基带算法:从原理到5G时代的通信变革【四】Polar 编解码(一)
文章目录 2.3 Polar 编解码2.3.1 Polar 码简介与发展背景2.3.2 信道极化理论基础对称容量与巴氏参数对称容量 I ( W ) I(W) I(W)巴氏参数 Z ( W ) Z(W) Z(W)常见信道信道联合信道分裂信道极化 本博客为系列博客,主要讲解各基带算法的原理与应用,包括&…...
基础篇(一)强化学习是什么?从零开始理解智能体的学习过程
强化学习是什么?从零开始理解智能体的学习过程 你是否曾好奇过,人工智能是如何在复杂的环境中学会做出决策的?无论是打游戏的AI,还是自动驾驶的汽车,还是最近很火的DeepSeek它们的背后都离不开一种强大的技术——强化…...
