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

upload-labs

upload-labs

(一)JS上传类型

前端验证(浏览器或前端代码中完成)

判断标准:

  • 用户上传文件时,页面立即给出反馈(如文件类型错误、大小超限),且没有提交到服务器。

  • 开发中常见使用 JavaScript(如 HTML5 File API)、前端框架(如 React、Vue)等进行处理。

  • 控制台中无网络请求或仅发生前端逻辑处理。

  1. 在浏览器里面设置里面禁用js或将checkfile删除 鼠标右键 -> 查看 -> 点击三点 -> 设置 -> 调试程序 —> 禁用js

禁用完之后再去上传php文件就能上传了

image-20250430085138463

image-20250430085354721

2.或者 直接f12将checkfile删除 改为ture也行

image-20250430085655605

(二)Content-type类型(后端验证类型)

后端验证(服务器端进行验证)

判断标准:

  • 用户点击“上传”后,页面出现加载或发送网络请求,服务器返回错误信息(如返回 JSON、状态码、错误提示)。
  • 通过抓包工具(如浏览器开发者工具 -> Network)可以看到请求发送到服务器。
  • 后端代码(如 PHP、Node.js、Python)中有处理逻辑,验证文件大小、类型、内容等。

抓包后将Content-type删除如果上传不成功就证明是后段验证

我们这里直接上传php文件 提示:文件类型不正确 知道文件是通过判断文件类型进行上传的

image-20250430090019540

上传php文件 修改这里的文件类型 jpg的文件属性image/jpeg 将Content-type属性复制,粘贴 到要上传的文件Content-type属性粘贴后即可上传成功

image-20250430090450727

(三)特殊后缀绕过

在apach里面修改httpd_conf,

image-20250919183006833

添加上可以用过php文件的后缀,抓包修改文件后缀即可上传成功

image-20250919182903647

image-20250919183017826

(四).htaccess绕过

上传php文件 发现.htaccess文件没有禁用

image-20250919183023242

在.htaccess文件下面添加 .jpg .txt以php格式去解析

image-20250919183050260

上传把php文件后缀改为jpg显示上传成功,Cmd打开 将1.jpg和111.php合并为000.ipg

将一句话木马插进图片

image-20250919183127603

(五)user.ini绕过

.user.ini上传前提是上传的目标文件里面必须先包含有php文件

将含有一句话木马的php文件后缀改为jpg

image-20250919183547576

然后写一个.user.ini的文件

里面写入auto_prepend file=666.jpg

这句话的意思是上传的这个文件的目录下面的所有php文件执行之前先预先去加载一下666.jpg

Snipaste_2025-09-19_18-34-40

先上传.user.ini,再上传111.jpg,去访问这个readme.php文件


(六)大小写绕过

在Windows中会自动把文件后缀改为小写,因此我们在抓包过程中把文件后缀改为大小写混合

image-20250919184505704

(七)空格绕过

代码里面可知上传没有对空格进行过滤,抓包在文件后缀加上空格即可绕过

image-20250919184547225

(八)加点绕过

没有对文件上传的点进行过滤,抓包在文件后面添加上一个点即可绕过

image-20250919184609367

(九)::$DATA绕过

在文件结尾加上::$DATA上传,把url里面的::$data删除,最后放到webshell链接工具里面链接(注意连接路径不要加上::$DATA)

绕过原理:补充知识:php在window的时候如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持"::$DATA"之前的文件名 他的目的就是不检查后缀名。

image-20250919184654003

(十) 点空格点绕过. .

点空格加点 zoe.php. .因为靶场过滤只过滤一遍,Windows下会自动把文件后缀的点和空格删除,抓包将文件名后缀改为111.php. .

image-20250919184817437

(十一) 双写后缀绕过

源码可知函数str_ireplace将字符串里面的数组将相应的地方替换掉,替换为空\zoe. pphphp,字符串替换为zoe.php

image-20250919184843647

(十二)%00截断 前置知识点“空字符

在做12关13关之前先把配置文件修改一下

在老版本的php中或者是C语言中,对于字符串读取的时候如何出现0X00就会当做字符串结束的标识

image-20250919184942159

0x00%000x00和%00都表示位空

一个是在编程语言使用0x00,一个是在url编码中使用%00

%00截断

文件保存是通过路径来决定的,路径上写什么最后的结果是什么

在后面加上要上传的php文件名,后面跟上%00截断 将后面的临时文件截掉显示为空 这样子我们上传的php文件就会被保存了

image-20250919185051398

上传成功访问,将zoe.php后面的内容临时路径删掉再使用webshell链接工具链接成功

第二种方式

可以看到这里的save_path是用get请求获取的,通过url里面的get路径用url编码传递的参数

(十三)0x00截断

在upload后面加上你要上传的文件名,然后在php后面空格选中占位符,这里为+

image-20250919185226013

Code hex是十六进制把这个hex里面的默认值改为16进制的00再上传,一定要点Apply changes

image-20250919185246167

为什么要进行16进制转换 ?

00截断是 %00解码的结果

url上面 %00 (自动解码一次)

post 下面 %00 二次解码 需要手工解码

(十四) 字节标识绕过 均为十六进制

文件只读取两个字节将上传的图片的前两个字节进行读取

转换为十进制 如果转化后的字节与图片类型相符 就显示上传成功

补充知识:
1.Png图片文件包括8字节:89 50 4E 47 0D 0A 1A 0A。即为 .PNG。
2.Jpg图片文件包括2字节:FF D8。
3.Gif图片文件包括6字节:47 49 46 38 39|37 61 。即为 GIF89(7)a。
4.Bmp图片文件包括2字节:42 4D。即为 BM。

将php文件改为jpg文件用记事本打开 在文件的开通空两格档做占位符 ,右键用010editor打开

Aa的十六进制为61 61

将开头两位的编码还为十六进制的 89 和 50

再去上传这个文件111.jpg

上传成功但是是以png格式解析的文件这里蚁剑是链接不了的

这里要利用文件包含漏洞

1.文件包含漏洞概述

和SQL注入等攻击方式一样,文件包含漏洞也是一种注入型漏洞,其本质就是输入一段用户能够控制的脚本或者代码,并让服务端执行。

什么叫包含呢?以PHP为例,我们常常把可重复使用的函数写入到单个文件中,在使用该函数时,直接调用此文件,而无需再次编写函数,这一过程叫做包含。

为什莫可以利用这个文件包含漏洞去上传我们的一句话木马去链接呢?

文件包含会把这个文件信息以php的这个形式去展开

这样我们就可以利用之前上传的带有一句话木马的png文件去链接webshell

有文件包含漏洞的页面在upload的上级目录

./upload/

再把刚刚上传的文件名粘贴上去

访问成功 在用webshell链接

总结:先去上传一个非法的文件包含一句话后门 修改文件头的两个字符 变成网站过滤对方时候合法的十六进制编码 这时候需要一个东西让jpg文件去解析 需要文件包含漏洞把jpg文件的内容变成php文件去解析所以才能连上一句话木马

(十五)图片码绕过

image-20250919190320080

索引2代表图像类型的常量值 GIF 代表1 JPG 代表2 以此类推

image-20250919190343684

头两个 512 代表宽是512 高是 512

后面两个512 代表的是包含图像属性的字符串

这个1代表的是类型的常量值这里代表的是GIF

image-20250919190355255

这个函数负责将文件图像类型的常量值1转化为GIF这个类型的后缀

image-20250919190404587

将图像2.png和111.php文件结合生成图片 (注意:这里要将图片放在前面,111.php放在后面生成图片 不然可能后续会上传不成功)

上传图片

image-20250919190413255

新建标签 复制文件存放地址 利用文件上传漏洞把png文件以php类型展开去解析

上传成功 然后以webshell链接

image-20250919190418237

(十六)图片码绕过2

判断图片类型 输出一个数值 1代表gif 2 代表 jpg 3 代表 png,剩下的操作跟第十五关一样的

image-20250919190257716

(十七)二次渲染绕过

文件移动到目录里面如果可以将文件进行一个重写就是进行一个二次渲染

上传我们尽量上传GIF文件 图片的重写或者二次渲染并不会把文件内容中的十六进制或者说是内容全部改变 可能会保留一部分

image-20250919190435702

上传一个没有进行二次渲染的源文件

image-20250919190456506

上传成功后将二次渲染后的另存文件保存到本地 打开010editor

点击tool 下的compare files

image-20250919190520702

将两个文件进行对比

image-20250919190524746

点击match

image-20250919190529293

蓝色选区是没有变的内容 蓝色区域是不会被二次渲染的地方 插入一句话木马的时候就插入到这片蓝色区域 插入一句话木马的时候尽量往后写

image-20250919190534782

插入一句话木马,上传文件,新标签打开图像 复制文件路径 利用文件包含漏洞将gif以php形式解析

两种思路

第一种 先上传一个正常的图片 将上传渲染之后的图片下载到本地 然后在去通过软件比较渲染之后的图片和源文件哪里没有变化 再在原图片图片没有变化的地方插入一句话木马 上传 上传之后就不会去把这个一句话木马给渲染了

第二种

把图片先上传 将上传渲染后的图片进行保存 在把渲染后的图片和原文件进行对比哪里没有变化 再在没有变化的地方进行一句哈木马插入 再上传

(十八)条件竞争原理与绕过

文件先去服务器上判断是不是合法的,再决定删除或者保留

正是因为服务器对后台语言可以让文件上传到服务器上之后再去判断才会有合后台语言竞争的机会

文件会在服务器上停留特别少的时间 通过不停的发送上传文件 和不停的访问上传文件请求,最后达到if没有删除之前上传成功

发送请求模块

image-20250919190631282

这个代码通过php语句生成一句话木马 2.php里面写入这一句话木马 上传 抓包

image-20250919190650616

右键打开到攻击模块 将里面的占位符全部清除 攻击模式默认狙击手 在show_code后面添加一个空位符&p=

image-20250919190718517

点击payload 在类型这里选这个number 点击random 限制发送次数为10000

image-20250919190736950

在options里面设置线程为25 进行发送请求攻击 访问上传模块

访问2.php所在的目录 文件还没上传所以显示错误

image-20250919190758978

打开burpsuite抓包 访问2.php路径请求 将2.php文件请求抓包下来 右键发送到攻击模块

image-20250919190811284

Payload可以选着为 NUll payload 然后选择持续生成

image-20250919190816610

将线程修改为20 然后先攻击上传2.php达到不停上传的目的 然后再点击访问攻击达到不停访问的目的 在上传的同时访问

image-20250919190831879

上传成功 最后webshell链接就好了 image-20250919190835846

(十九)apach解析漏洞+条件竞争原理绕过

什么apach解析漏洞?

这里有个php文件后面加了个.7z apach通过网站访问文件是通过从右往左看 它不会去解析7z就会解析php这个后缀 Apach解析不了7z 只能解析php了 把这个文件当做php去执行 这个文件里面是hello

image-20250919190911568

image-20250919190917647

打开代理 2.php文件里面写的一句话木马 将2.php文件后面加上.7z显示上传成功

image-20250919190958612

这个网站会把最后那个7z当做后缀名 重命名的时候 把这个7z加上时间戳 这个时间序列进行一个拼接形成这个7z文件

image-20250919191029936

虽然可以访问可以上传 但是不会被执行 我们要做的把这个文件重命名之前 进行一次访问 文件里面也是要那种能生成小马的php文件

image-20250919191041272

上传2.php.7z 发送到攻击模块 清除占位符 不停上传的同时进行不停的访问 两边都开始攻击

image-20250919191102233

image-20250919191109528

image-20250919191114008

image-20250919191120535

image-20250919191126567

image-20250919191141926

image-20250919191150271

上传成功 webshell访问就行

(二十一)审计+数组后缀绕过

代码审计先对type进行的检查是不是上面的类型然后将文件转为数组在这里用.分割

通过点分割将1.php 分解成1 和 php

image-20250919191205305

$ext=end($file)这个函数获取数组最后一位值然后在判断php是不是在下面 这个白名单里面

image-20250919191306965

Rest($file)获取数组第一位 $file[count($file)-1] 回到下标 count($file)获取数组有多少个元素

数组的下标是从0开始第0项是第1项是1 第2项是第1项是php 所以要减1

image-20250919191310207

count($file)是判断个数的 $ext=end($file)有想和数组最后一个拼接 我们手动在post的数组请求里面添加了一个数组$file [8]=1 此时这样子$file [2]~$file [7]之间都是null count($file)个数远远小于下标数字 count($file)现在的有效各数为3 null不算 $file[count($file)-1] 就是 3-1=2 这里我们下标访问的为$file [2] 这个数组里面的是null为空

image-20250919191314817

我们pist请求里面传递一个我们想要给他的数组

将$file[0]改为含有一句话木马的1.php 然后我们传递的数组最后$file[8]=jpg一位必须是jpg png gif file[8]或者其他数组大于1就行(原因是·分割将1和php分成两个数组,而数组下标是从0开始的所以第0项是第1项是1 第2项是第1项是php 所以大于1)

首先burpsuite打开上传我们含有php文件的一句话木马

image-20250919191323102

抓包修改文件类型

image-20250919191329017

image-20250919191338687

image-20250919191343207

将save_name改为save_name=[0] 相当于一个数组 这样数组的第一位就是1.php

上传再用webshell链接

image-20250919191352252

复制一个新建将save_name改为save_name[3]大于1就行这样数组的最后一位拼接的就是png

http://www.hskmm.com/?act=detail&tid=9879

相关文章:

  • 物联网摄像头硬件设计秘籍:低成本与低功耗的平衡之道
  • CF182C Optimal Sum
  • 关于网络社交
  • nginx学习笔记一:基础概念
  • HTB UNIV CTF 24 Armaxix靶场漏洞链:命令注入与账户接管实战
  • 【JAVA接口自动化】JAVA如何读取Yaml文档
  • PyTorch Weight Decay 技术指南
  • AUTOSAR进阶图解==>AUTOSAR_SWS_PDURouter - 实践
  • getDefaultMidwayLoggerConfig报错;解决方法。
  • js获取浏览器语言,以及调用谷歌翻译api翻译成相应的内容
  • 总结RocketMQ中的常见问题
  • The 2025 ICPC Asia EC Regionals Online Contest (II)
  • C++线上练习
  • Python实现Elman RNN与混合RNN神经网络对航空客运量、啤酒产量、电力产量时间序列数据预测可视化对比
  • 4G/Wi-Fi/以太网三网合一,智能融合通信实战案例集
  • 关于介绍自己的第一篇随笔
  • 深入解析:N32G43x Flash 驱动移植与封装实践
  • Backblaze上如何传大文件
  • 解题报告-老逗找基友 (friends)
  • Caused by: java.lang.ClassNotFoundException: org.apache.rocketmq.remoting.common.RemotingUtil
  • VAE In JAX【个人记录向】
  • BLE蓝牙配网双模式实操:STA+SoftAP技术原理与避坑指南
  • 第58天:RCE代码amp;命令执行amp;过滤绕过amp;异或无字符amp;无回显方案amp;黑白盒挖掘
  • 057-Web攻防-SSRFDemo源码Gopher项目等
  • 060-WEB攻防-PHP反序列化POP链构造魔术方法流程漏洞触发条件属性修改
  • 059-Web攻防-XXE安全DTD实体复现源码等
  • 061-WEB攻防-PHP反序列化原生类TIPSCVE绕过漏洞属性类型特征
  • 051-Web攻防-文件安全目录安全测试源码等
  • Dilworth定理及其在算法题中的应用
  • 050-WEB攻防-PHP应用文件包含LFIRFI伪协议编码算法无文件利用黑白盒