upload-master 文件上传漏洞靶场1-21关

文章详细描述了在不同安全防护下如何通过各种技巧上传webshell,包括利用Firefox禁用JS绕过前端过滤,更改文件后缀,使用.htaccess重定义文件解析,双写、空格、特殊字段绕过后缀黑名单,以及应对条件竞争和文件路径问题的方法。这些策略展示了网络安全攻防中的常见技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一关

尝试把webshell传入到服务器,发现服务器对文件后缀名进行过滤。

 查看页面源代码:

发现采用前端js过滤,可以直接采用firefox浏览器关闭js绕过js过滤:

 js关闭后直接上传php文件,发现上传成功

第二关

尝试上传php文件,发现同样对其进行过滤

查看页面源代码未发现相关js过滤,尝试把webshell后缀名改为png格式上传,发现可以上传 

 尝试通过burp截获数据,将文件名改回PHP文件

 尝试访问上传的webshell访问成功。

 第三关

尝试第二关的方法,发现存在文件后缀黑名单

 尝试直接在图片里面嵌入webshell代码,在cmd中执行 copy 1.jpg/b+2.php 3.jpg,将3.jpg上传,尝试使用中国菜刀连接,连接成功

同时我们可以尝试绕过黑名单,同样使用burp拦截后修改后缀名为php3成功绕过

 实际上,除了后缀为.php的文件会被当成php文件解析, 还有phtml php3 php4 php5之类的后缀也会

 第四关

尝试使用第三关的方法,发现可行

此关过滤了大部分文件危险文件名,采用%00截断失败,尝试采用.htaccess文件来绕过

一般后端的黑名单不会过滤把.htaccess后缀写进去,那么我们可以先上传一个.htaccess文件上去,提前设置好让它把.jpg文件当做php文件来解析,这样后续只需要上传.jpg文件就可以了。
.htaccess文件的内容如下:

AddType application/x-httpd-php .jpg


这个指令代表着.jpg文件会当做php文件来解析。
很多windows操作系统是禁止将文件名设置为空的,但是我们可以用cmd命令来实现。首先新建一个名为1.txt的文件,然后输入上述代码。接着在该文件夹下打开cmd窗口,输入:

ren 1.txt .htaccess

把一句话木马转为png格式直接上传可用

第五关

使用第三关方法可行

采用.htaccess文件绕过发现文件无法上传

查看网页源代码

 发现删除了文件末尾的.且进行了首尾去空,尝试使用burp拦截修改数据为webshell.php. .发现成功绕过

 第六关

第三关方法可行

使用第五关的方法尝试上传,发现上传成功但文件名被修改

疑似删除了PHP后缀,尝试使用双写绕过在使用多种双写方法后失败pphpp,phpphp等等

查看页面源代码发现无大小写转换,采用大小写绕过成功

 第七关

使用图片上传木马可行

查看网页源代码

发现不存在空格过滤,使用burp尝试在.php后面加入空格,发现文件上传成功,查看上传文件是否生效,发现页面空白,无法生效。联合文件包含漏洞使用可以访问或者使用菜刀连接。

http://192.168.79.152/upload-master/include.php?file=upload/202302081401109951.php%20

第八关

使用图片上传木马可行,方法参考第三关。

查看网页源代码

 发现未对.进行处理,使用burp在末尾加上.变成php.尝试上传,上传成功,尝试使用成功

第九关 

直接查看源码,发现未对data进行处理

 可以使用::$DATA字段进行绕过,原理为在window的时候如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名,这里我们使用的是Linux就不做演示。

第十关

可以采用图片码绕过,查看源代码发现与第五关相同,使用php. .的方法绕过可行,详情参照第五关

第十一关

查看源代码发现将黑名单文件名后缀进行了删除

 考虑采用双写绕过使用.phphpp失败,文件后缀变为hpp,采用pphphp可以绕过,使用正常

第十二关

 查看源代码,发现使用白名单过滤

 直接使用图片码,详情参考第三关

第十三关

与十二关同理采用图片码绕过

第十四关

图片码!!!这关要注意它采用了幻数认证,如果失败抓包查看幻数是否符合条件。

第十五关

上传我们制作好的图片码,这里建议直接用空白图片加shell.php去生成新图片,新生成的图片可以直接上传不用做修改

 第十六关

与第十五关相同

第十七关

第十八关

条件竞争,使用burp不断上传,使用python不断访问

python代码

import requests
url="http://192.168.79.152/upload-master/upload/shell.php"
while True:
    web_result=requests.get(url)
    if web_result.status_code == 200:
        print("Success")
        break
    else:
        print("Failed")

 PHP代码

<?php
$fp=fopen('webshell.php','w');
fwrite($fp,'<?php phpinfo(); ?>');
fclose($fp);
?>

当python成功访问到shell.php时就会生成一个webshell.php的永久文件

上传后使用BurpSuite截包,按Ctrl+I发送至Intruder,设置Payload type为Null payloads,Payload Options设置为Continue indefinitely,不断上传该文件,随后运行脚本不断访问该文件。

 

python超过了访问限制G了,建议直接修改源代码,否则看脸。我们这里将源代码修改为移动后检查前等待3S钟

 在burp上传的同时使用python访问直到出现

 这个时候去靶场查看看到webshell.php文件就表示成功了

 访问正常

第十九关 

查看源代码发现这关有点问题,在保存文件路径时缺少'/'导致上传文件后文件不保存在upload下面,我们修改下源代码添加上'/'

 同时我们发现了他这里实例化了一个MyUpload对象,去里面查看一下他到底执行了什么操作。

里面可以看到他允许上传的文件类型

我们主要看一下这个move函数,发现调用move时文件路径也存在同样的问题,我们一并对其进行修改 

 修改完成后尝试上传正常文件便可以在upload下面查看到该文件了。

这题根据代码审计发现并未对文件内容进行审核,也未进行二次渲染,直接使用图片码即可

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值