当前位置: 首页 > article >正文

upload labs靶场

upload labs靶场

注意:本人关卡后面似乎相比正常的关卡少了一关,所以每次关卡名字都是+1才可以和正常关卡在同一关

一.个人信息

个人名称:张嘉玮

二.解题情况

三.解题过程

题目:up load labs靶场

pass 1前后端

思路及解题:先验证合法性是前端还是后端(如果是前端验证意味着你可以在前端验证之后后数据流发往后台的时候将其拦截并且修改)

题目中的提交限制必须为jpg等类型,需要判断这个提交是前端还是后端验证的,所以先打开抓包,并且发送一个不合法的php文件,提交,发现抓包并没有阻止页面显示文件上传格式错误,所以是前端验证。因此我直接将php文件类型重命名为jpg类型,提交文件前先抓包拦,再改变其中文件类型php为jpg,再forward,此时我已将木马发送到其内部,之后在下方图片中右键点击新标签页中打开图片,复制域名,打开蚁剑,右击添加数据,粘贴域名到url并且输入密码a,点击测试连接观察是否通过,若通过再添加,此时便可以控制对方了。

一句话木马

<?php
@eval($_POST_['a']);
?>

+++

pass 2前后端

1.思路:仍然是先看合法性是前端还是后端

我上传一个不合法的php文件并且用bp拦截,发现在拦截过程中页面未报错,所以是后端验证,不是前端,,之后判断拦截下的语句中哪句话是判断文件类型的,所以我继续先上传jpg,burp拦截后找到其中的Content-Type:image/jpeg然后删掉再forward,发现文件传输错误,所以它是通过content-type验证合法性的,之后我再上传一个php,拦截,将content-type:application/octet-stream改为image/jpeg之后forward则发送成功,蚁剑中添加数据后查看是否成功

+++

pass 3文件名加数字

(此题验证方式为黑名单,大部分网站是白名单)

思路及做法:查看源代码后发现其限制了php文件 但存在漏洞,未限制php3,4等格式;

所以直接将文件后缀名改为.php3等类型

+++

pass4配置文件

思路及做法:1.查看源码,发现其已限制大多数文件类型,但是有一个明显的漏洞,没有限制htacess文件,所以直接将文件后缀名改为.htacess就行了。

AddType application/x-httpd-php .jpg.txt意思就是将txt和.jpg文件当作php文件解析

2.所以接下来直接上传一个jpg文件类型的一句话木马就可以搞定了,再连接蚁剑测试是否成功.

+++

补充文件后缀名字

.htaccess

叫分布式配置文件 作用于网站根目录及其子目录 修改后立刻生效 可覆盖httod-conf

httpd -conf

(先加载)

包含apache http 作用于整个服务器 优先级低,需管理员权限 ,且重启服务器才可以生效

.user.ini

作用于用户或特定目录的配置文件,,可覆盖或追加配置选项,在web应用程序根目录下,可覆盖php.ini,追加全职配置文件

php.ini

(先加载)

作用是存储了对整个php环境生效的配置选项,通常位于php安装目录之下,优先级较低,需管理员权限和重启web服务器

+++

pass5配置文件

思路和做法:

仍然是有黑名单,限制了.htaccess,但是未限制.user.ini的,因为.user,.ini优先级程度高,可以覆盖掉php.ini,所以不限制的危害较大

Auto-prepend-file=index(2).txt   //此文件中有木马//自动包含所有文件 用index(2).txt包含

所以先上传一个.user.ini的文件 再上传对应的php改为jpg后的文件 ,通过蚁剑连接,就可以

法二: 思路: 由于题目中检查文件名后缀的源代码并未选择循环结构,因此后缀名.php 后直接加**.空格.就可以在其检查后正好剩一个.php.正好运行(windows操作系统下会将最后一个点删除,使得文件仍然可以运行,所以蚁剑连接时直接输入.php**就可以了。

+++

pass6大写

思路:题目黑名单源代码中明显没有限制pHp,PHP等大写形式的后缀名,所以直接在bp中拦截之后更改Content后面的后缀名就可以了,之后蚁剑连接看有没有成功

+++

pass7空格

思路:题目黑名单源代码未限制首位去空,借此绕过黑名单(都需bp拦截后修改)。并且我windows系统下就算给文件后缀名加了点系统也会自动删除,所以可以正常运行。

+++

pass8 .

思路:题目黑名单源代码中少了del的自动删除.,**(删除方式是从右边往左边删,遇到空格就会停止)**因此直接bp更改Content下的文件后缀名就可以了,注意蚁剑搭建url时将最后的.删除,因为windows下会自动删除多余的点.

+++

补充额外数据流

格式: “”::$DATA" 即表示一个附加数据流 它不是一个文件 所以不会验证文件后缀.

作用:和例如打开txt文件后直接就可以看见的文字信息,也叫默认数据流不同,其可以存储文件的元数据,标签,备份等,想要访问需要特殊命令

导入方式:

  1. echo 内容 >>文件名:数据流名

    访问 Notepad 文件名:数据流名

  2. type 文件名>>文件名.数据流名

+++

pass9::$DATA

思路:题目黑名单中缺少了对**:: D A T A ∗ ∗ 的限制,这不是一个文件,是一个额外数据包,因此黑名单不会检查它,通过这个 b u g 直接绕过,之后新建标签页打开后将 u r l 里的 : : DATA**的限制,这不是一个文件,是一个额外数据包,因此黑名单不会检查它,通过这个bug直接绕过,之后新建标签页打开后将url里的:: DATA的限制,这不是一个文件,是一个额外数据包,因此黑名单不会检查它,通过这个bug直接绕过,之后新建标签页打开后将url里的::DATA删除就可以访问了

+++

pass10. .

思路:删除点与空格的源代码中没有添加循环 ,所以直接**.空格 .**解决

+++

pass10双写后缀绕过

$file_name = str_ireplace($deny_ext,"", $file_name);

意思是deny—会将$file_name路径下的之前黑名单的文件全部变成’ ',也就是删除他们 顺序是从左边往右边删(没有循环的条件下只循环一下

+++

补充空字符

格式:0x00 顺序从左到右(在编程语言使用 || %00(在url中使用)

+++

pass11%00截断(php<5.3.29)

思路:观察源代码发现其用白名单过滤

  $ext_arr = array('jpg','png','gif');
 $file_ext = substr($_FILES['upload_file']['name'],  strrpos($_FILES['upload_file']['name'],".")+1)

逗号前 是获取文件 也就是从哪里获取:逗号后 是在几位 ;(点在这个里面最后出现是出现在了第几位)(从左到右)

php上传先先把文件放在临时路径当中,再移动到指定位置

漏洞在于通过**GET[‘save_path’].来拼接组成上传的文件路径 而这个get传参是我们可以改掉的地方,改掉其上传路径,再将后面进行截断。其实原理就是在后端验证时它发现你是jpg文件,所以给你通过了,但是后续经过移动到临时路径和最终路径的过程中时,111.php和.jpg拼接,因为php后面有%00所以jpg会省略,最终还是以php形式解读的

操作:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

改为

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

%00 是空字符(NULL字符)的URL编码,它在某些情况下可能被用于截断字符串或绕过安全措施

(后面的http1.1是个http协议)

+++

pass12

思路:大致和12关一样

将空格改成右边框中hex(16进制)形式---->00

+++

补充图片字符标识

  1. jpeg/jfif 头字节0xff 0xd8
  2. png(无损压缩形式) 0x89 0x50
  3. gif 0x47 0x47 0x49
  4. bmp(windows位图) 0x42 0x4d
  5. tuff(标签图片格式) 可是不同的d

+++

pass13修改前两个字节

思路及做法:

观察题目源代码,发现其有判断语句判断(读取文件的前两个字节)转化为10进制再判断.

 switch($typeCode){      case 255216:            $fileType = 'jpg';  //十进制break;case 13780:            $fileType = 'png';break;        case 7173:            $fileType = 'gif';break;default:            $fileType = 'unknown';}    return $fileType;

代码通过读为图片头字母判断是什么图片类型

做法:先将一句话木马以jpg形式更改后缀名,再通过记事本形式打开将最前面增加两个空格,(以方便后续的修改),再通过010editor更改前面两个字头->89 50 (png)形式,之后将文件后缀名字改为php以原来的方式上传 发现不可以 因为文件以Png的形式解析了;所以需要将jpg文件以php形式输出,这个时候就需要文件包含漏洞了:上传一个改了文件头的php文件,观察他的路径 是在upload路径里面 而包含漏洞的文件夹在他的上级目录,所以在有漏洞页面的后面输入urll后**?file=./upload/7020241111194319**就成功了

漏洞:通过get请求获得file文件中的东西,它没有对文件包含的东西过滤,都会将文件以php形式解析

所以可以利用它会将文件当成php形式的漏洞直接输入?file=1.jpg(文件中是一句话木马)

+++

pass14图片马绕过

getimgaesize()意思是返回包含文件属性的数组,这里不可以通过13关一样简单的方法过了

做法:应用cmd,将一个图片与含有一句话代码的php文件(这两个文件必须放在一个路径)通过cmd(打开cmd后,通过基础命令进入他俩在的那个路径) 输入:copy 1.jpg/b + index(22).php/a 2.jpg生成一个图片马,之后就可以成功发送了,之后打开文件包含漏洞的页面 输入**?file=./upload/刚刚随机生成的文件编码**,就可以通过蚁剑连接了.

+++

pass15图片马绕过

仿照第14关就可以过去了

+++

pass16二次渲染

思路:通过观察源代码,发现它将图片进行了二次渲染,也就是重新超了一遍,会删掉一些东西,所以原来有的Php木马会直接消失掉,如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

做法一:保存一个gif图片(),上传到题目中去,通过010editor打开并进行比较,其中蓝色部分是两者相同的部分,找到两者相同的地方(要稍微靠后一点),则我可以在原来的图片的一堆数字里增加一句话木马,这里的木马因为被掩盖掉了,所以木马不会被删除,上传成功之后,通过文件包含漏洞在url里输入?file=./upload/文件名,再通过蚁剑连接,然后就成功了.

做法二:在你第一次发送的gif图片里直接插入一句话木马,再发送给题目,发现木马其并没有被删掉,所以这就是他的漏洞,他渲染一次后就不会再渲染了,所以可以直接将渲染一次后的图片里直接插入一句话木马,就成功了

+++

补充条件竞争

文件上传会从临时目录(服务器)转移到指定目录,再判断文件是否合法,所以通过发送很多请求,使判断过程缓不过来,我再趁机访问

<?php fputs(fopen('../upload/shell18.php','w'),'<?php phpinfo();?>');?>

原理:访问有没有Php文件,如果没有就会新建一个shell.php文件 再将一句话木马写下去

+++

pass17

思路及做法:先抓一个上传php文件的包

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

同时在url中搜索 路径为在upload里的你要往过发的文件的路径,也拦截住,把这两个都发送都爆破模式,再按照上述设置同时爆破,只要看见upload路径下长存这那个shell18.php文件就成功了.(注意要一边访问一边攻击)

+++

pass18apache解析漏洞+条件竞争(php版本为apache版本才有的漏洞)

思路:在这里的源代码中会提前解析文件后缀名,所以就算爆破,其中的php文件也会被拦截,但是apache解析不了7z 它从右边往左边解析时候,遇到7z不会执行,会直接解析php index(22).php.7z,所以可以借助7z的后缀名字通过,下一步就和17关一样了.

+++

pass19后缀绕过总结

思路:观察源代码发现其会直接看.后面的后缀 然后判断

可以上传的时候 后缀名字为.php空格 .jpg就可以通过了,因为windows解析时候会自动将空格删除,所以不要害怕文件打不开,而题目过滤时却会读取到jpg,所以可以成功绕过。

+++

hp版本为apache版本才有的漏洞)

思路:在这里的源代码中会提前解析文件后缀名,所以就算爆破,其中的php文件也会被拦截,但是apache解析不了7z 它从右边往左边解析时候,遇到7z不会执行,会直接解析php index(22).php.7z,所以可以借助7z的后缀名字通过,下一步就和17关一样了.

+++

pass19后缀绕过总结

思路:观察源代码发现其会直接看.后面的后缀 然后判断

可以上传的时候 后缀名字为.php空格 .jpg就可以通过了,因为windows解析时候会自动将空格删除,所以不要害怕文件打不开,而题目过滤时却会读取到jpg,所以可以成功绕过。

+++

相关文章:

upload labs靶场

upload labs靶场 注意:本人关卡后面似乎相比正常的关卡少了一关&#xff0c;所以每次关卡名字都是1才可以和正常关卡在同一关 一.个人信息 个人名称&#xff1a;张嘉玮 二.解题情况 三.解题过程 题目&#xff1a;up load labs靶场 pass 1前后端 思路及解题&#xff1a;…...

自定义多功能输入对话框:基于 Qt 打造灵活交互界面

一、引言 在使用 Qt 进行应用程序开发时&#xff0c;我们经常需要与用户进行交互&#xff0c;获取他们输入的各种信息。QInputDialog 是 Qt 提供的一个便捷工具&#xff0c;可用于简单的输入场景&#xff0c;但当需求变得复杂&#xff0c;需要支持更多类型的输入控件&#xff0…...

手写MVVM框架-环境搭建

项目使用 webpack 进行进行构建&#xff0c;初始化步骤如下: 1.创建npm项目执行npm init 一直下一步就行 2.安装webpack、webpack-cli、webpack-dev-server&#xff0c;html-webpack-plugin npm i -D webpack webpack-cli webpack-dev-server html-webpack-plugin 3.配置webpac…...

论文阅读:Realistic Noise Synthesis with Diffusion Models

这篇文章是 2025 AAAI 的一篇工作&#xff0c;主要介绍的是用扩散模型实现对真实噪声的仿真模拟 Abstract 深度去噪模型需要大量来自现实世界的训练数据&#xff0c;而获取这些数据颇具挑战性。当前的噪声合成技术难以准确模拟复杂的噪声分布。我们提出一种新颖的逼真噪声合成…...

JVM监控和管理工具

基础故障处理工具 jps jps(JVM Process Status Tool)&#xff1a;Java虚拟机进程状态工具 功能 1&#xff1a;列出正在运行的虚拟机进程 2&#xff1a;显示虚拟机执行主类(main()方法所在的类) 3&#xff1a;显示进程ID(PID&#xff0c;Process Identifier) 命令格式 jps […...

【TensorFlow】T1:实现mnist手写数字识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 1、设置GPU import tensorflow as tf gpus tf.config.list_physical_devices("GPU")if gpus:gpu0 gpus[0]tf.config.experimental.set_memory_g…...

【ArcGIS_Python】使用arcpy脚本将shape数据转换为三维白膜数据

说明&#xff1a; 该专栏之前的文章中python脚本使用的是ArcMap10.6自带的arcpy&#xff08;好几年前的文章&#xff09;&#xff0c;从本篇开始使用的是ArcGIS Pro 3.3.2版本自带的arcpy&#xff0c;需要注意不同版本对应的arcpy函数是存在差异的 数据准备&#xff1a;准备一…...

动静态库的学习

动静态库中&#xff0c;不需要包含main函数 文件分为内存级(被打开的)文件和磁盘级文件 库 每个程序都要依赖很多基础的底层库&#xff0c;本质上来说库是一种可执行代码的二进制形式&#xff0c;可以被载入内存执行 静态库 linux .a windows .lib 动态库 linux .…...

Rapidjson 实战

Rapidjson 是一款 C 的 json 库. 支持处理 json 格式的文档. 其设计风格是头文件库, 包含头文件即可使用, 小巧轻便并且性能强悍. 本文结合样例来介绍 Rapidjson 一些常见的用法. 环境要求 有如何的几种方法可以将 Rapidjson 集成到您的项目中. Vcpkg安装: 使用 vcpkg instal…...

DeepSeek的多模态AI模型-Janus-pro,可生图,可读图

简介 Janus-Pro 是由 DeepSeek 开发的一款多模态理解与生成模型&#xff0c;是 Janus 模型的升级版。它能够同时处理文本和图像&#xff0c;既能理解图像内容&#xff0c;又能根据文本描述生成高质量图像。Janus-Pro 的核心目标是通过解耦视觉编码路径&#xff0c;解决多模态理…...

Python爬虫实战:一键采集电商数据,掌握市场动态!

电商数据分析是个香饽饽&#xff0c;可市面上的数据采集工具要不贵得吓人&#xff0c;要不就是各种广告弹窗。干脆自己动手写个爬虫&#xff0c;想抓啥抓啥&#xff0c;还能学点技术。今天咱聊聊怎么用Python写个简单的电商数据爬虫。 打好基础&#xff1a;搞定请求头 别看爬虫…...

最短木板长度

最短木板长度 真题目录: 点击去查看 E 卷 100分题型 题目描述 小明有 n 块木板&#xff0c;第 i ( 1 ≤ i ≤ n ) 块木板长度为 ai。 小明买了一块长度为 m 的木料&#xff0c;这块木料可以切割成任意块&#xff0c;拼接到已有的木板上&#xff0c;用来加长木板。 小明想让最…...

【人工智能】掌握图像风格迁移:使用Python实现艺术风格的自动化迁移

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 图像风格迁移(Image Style Transfer)是一种基于深度学习的计算机视觉技术,通过将一张图像的内容与另一张图像的艺术风格结合,生成一幅具…...

git submodules

当代码仓库中包含 .gitmodules 文件时&#xff0c;这意味着该仓库使用了 Git 子模块&#xff08;Git Submodules&#xff09;。.gitmodules 文件记录了子模块的相关信息&#xff0c;如子模块的仓库地址、路径等。若要在下载代码时一并同步子模块&#xff0c;可以按照以下几种常…...

7 与mint库对象互转宏(macros.rs)

macros.rs代码定义了一个Rust宏mint_vec&#xff0c;它用于在启用mint特性时&#xff0c;为特定的向量类型实现与mint库中对应类型的相互转换。mint库是一个提供基本数学类型&#xff08;如点、向量、矩阵等&#xff09;的Rust库&#xff0c;旨在与多个图形和数学库兼容。这个宏…...

游戏引擎 Unity - Unity 下载与安装

Unity Unity 首次发布于 2005 年&#xff0c;属于 Unity Technologies Unity 使用的开发技术有&#xff1a;C# Unity 的适用平台&#xff1a;PC、主机、移动设备、VR / AR、Web 等 Unity 的适用领域&#xff1a;开发中等画质中小型项目 Unity 适合初学者或需要快速上手的开…...

[openwrt]openwrt slaac only模式下部分终端无法获取到IPv6 DNS

问题描述 OpenWrt 中,如果启用了 RA 单播(ra_unicast),但部分终端无法获取到 DNS 信息 问题分析 RA 单播的局限性 并非所有终端都完全支持通过单播接收 RA 消息。部分终端可能无法正确解析单播 RA 中的 RDNSS(Recursive DNS Server)选项,从而导致无法获取 DNS 信息。终…...

Java 面试真题

本题适合一到三年 Java 开发 &#xff0c;以下问题都是按照原面试官提问记录 文章目录 我要进大厂系列面试题二面 我要进大厂系列面试题 全部真题&#xff0c;欢迎投稿你的面试经验。 本篇涉及基础较多&#xff0c;但要耐性看完。 JVM内存模型垃圾回收器用的哪个gc各个算法…...

验证工具:GVIM和VIM

一、定义与关系 gVim&#xff1a;gVim是Vim的图形界面版本&#xff0c;提供了更多的图形化功能&#xff0c;如菜单栏、工具栏和鼠标支持。它使得Vim的使用更加直观和方便&#xff0c;尤其对于不习惯命令行界面的用户来说。Vim&#xff1a;Vim是一个在命令行界面下运行的文本编…...

理解 C 与 C++ 中的 const 常量与数组大小的关系

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C语言 文章目录 &#x1f4af;前言&#x1f4af;数组大小的常量要求&#x1f4af;C 语言中的数组大小要求&#x1f4af;C 中的数组大小要求&#x1f4af;为什么 C 中 const 变量可以作为数组大小&#x1f4af;进一步的…...

孟加拉国_行政边界省市边界arcgis数据shp格式wgs84坐标

这篇内容将深入探讨孟加拉国的行政边界省市边界数据&#xff0c;该数据是以arcgis的shp格式提供的&#xff0c;并采用WGS84坐标系统。ArcGIS是一款广泛应用于地理信息系统&#xff08;GIS&#xff09;的专业软件&#xff0c;它允许用户处理、分析和展示地理空间数据。在GIS领域…...

安心即美的生活方式

如果你的心是安定的&#xff0c;那么&#xff0c;外界也就安静了。就像陶渊明说的&#xff1a;心远地自偏。不是走到偏远无人的边荒才能得到片刻清净&#xff0c;不需要使用洪荒之力去挣脱生活的枷锁&#xff0c;这是陶渊明式的中国知识分子的雅量。如果你自己是好的男人或女人…...

APT (Advanced Package Tool) 安装与使用-linux014

APT (Advanced Package Tool) APT (Advanced Package Tool) 是一个用于管理 Debian 和 Ubuntu 系列 Linux 发行版上的软件包的工具。它简化了软件的安装、升级、配置和删除过程。APT 为用户提供了一个统一的命令行接口&#xff0c;使得管理和安装软件变得更加简单。 APT 主要…...

深度学习篇---深度学习中的超参数张量转换模型训练

文章目录 前言第一部分&#xff1a;深度学习中的超参数1. 学习率&#xff08;Learning Rate&#xff09;定义重要性常见设置 2. 批处理大小&#xff08;Batch Size&#xff09;定义重要性常见设置 3. 迭代次数&#xff08;Number of Epochs&#xff09;定义重要性常见设置 4. 优…...

Java设计模式:行为型模式→状态模式

Java 状态模式详解 1. 定义 状态模式&#xff08;State Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许对象在内部状态改变时改变其行为。状态模式通过将状态需要的行为封装在不同的状态类中&#xff0c;实现对象行为的动态改变。该模式的核心思想是分离不同状态…...

快速幂,错位排序笔记

​ 记一下刚学明白的快速幂和错位排序的原理和代码 快速幂 原理&#xff1a; a^b (a^&#xff08;b/2&#xff09;) ^ 2&#xff08;b为偶数&#xff09; a^b a*&#xff08;a^&#xff08; (b-1)/2&#xff09;&#xff09;^2&#xff08;b为奇数&#xff09; 指数为偶数时…...

机器人基础深度学习基础

参考&#xff1a; &#xff08;1&#xff09;【具身抓取课程-1】机器人基础 &#xff08;2&#xff09;【具身抓取课程-2】深度学习基础 1 机器人基础 从平面二连杆理解机器人学 正运动学&#xff1a;从关节角度到末端执行器位置的一个映射 逆运动学&#xff1a;已知末端位置…...

Java语法进阶

目录&#xff1a; Object类、常用APICollection、泛型List、Set、数据结构、CollectionsMap与斗地主案例异常、线程线程、同步等待与唤醒案例、线程池、Lambda表达式File类、递归字节流、字符流缓冲流、转换流、序列化流、Files网络编程 十二、函数式接口Stream流、方法引用 一…...

探索 paraphrase-MiniLM-L6-v2 模型在自然语言处理中的应用

在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;将文本数据转换为机器学习模型可以处理的格式是至关重要的。近年来&#xff0c;sentence-transformers 库因其在文本嵌入方面的卓越表现而受到广泛关注。本文将深入探讨 paraphrase-MiniLM-L6-v2 模型&#xff0c;这…...

《chatwise:DeepSeek的界面部署》

ChatWise&#xff1a;DeepSeek的界面部署 摘要 本文详细描述了DeepSeek公司针对其核心业务系统进行的界面部署工作。从需求分析到技术实现&#xff0c;再到测试与优化&#xff0c;全面阐述了整个部署过程中的关键步骤和解决方案。通过本文&#xff0c;读者可以深入了解DeepSee…...