upload-labs通关小记 Pass17-20 含代码审计

upload-labs通关小记 Pass17-20

"upload-labs通关小记"系列相关:
01:upload-labs通关小记 Pass1-10
02:upload-labs通关小记 Pass11-16 含代码审计
03:upload-labs通关小记 Pass17-20(当前文章)。

第十七关——条件竞争

审计代码:

请添加图片描述

由于文件存储在前,文件审查在后,两者之间有一定的间隙时间,所以我们上传的非法文件能在这个间隙时间内得以保留;

如果这个非法文件是一个webshell_creater.php:用于在服务端创建另一个webshell;

那么只要它在被服务器检测为恶意文件之前创建了新的webshell,新的webshell就能一直存在。

webshell_creater.php如下:
请添加图片描述
用Burp Suite抓两个包(第一个上传webshell_creater.php的请求包,第二个是访问webshell_creater.php的请求包),然后分别右键发送至Intruder模块

①此请求上传文件webshell_creater.php:

请添加图片描述

②此请求访问webshell_creater.php,意在利用其生成webshell.php:

请添加图片描述

然后在Intruder中选择设置Payloads,Attack type(攻击模式)选择Sniper(狙击手),Payload type(有效载荷类型)选择Null Payloads,两个包均选择生成1000次

①以下是上传webshell_creater.php
请添加图片描述请添加图片描述

②以下是访问webshell_creater.php

请添加图片描述请添加图片描述

设置完毕后,尽量快地依次点击两个页面右上方的Start attack,来开始发包;

当试图访问webshell_creater.php的请求中至少有一个成功时,说明我们的webshell.php已经在服务端生成了。

请添加图片描述

蚁剑直接连接webshell.php即可。
请添加图片描述

第十八关——条件竞争

审计代码:

此pass代码比较长,而且完整的代码是没办法直接看到的(或许作者之意是不必拘于细节,找到关键点即可)

整个代码的主要逻辑是:有文件上传来->检测其类型是否合法->合法就保存->给文件重命名

而本Pass与Pass-17的区别是:

Pass-17的"间隙时间"在文件保存检测其为非法并删除之间这段时间;

本Pass的"间隙时间"在检测文件后缀为合法并保存文件被重命名之间这段时间。

所以,我们一定要①先绕过后缀名检测,并②间隙时间内访问到webshell_creater.php

此外,在服务端的代码中有一个小小的bug,导致本Pass的文件上传路径不太正确。

(代码路径:…\upload-labs-env-win-0.1\upload-labs-env\WWW\Pass-18\myupload.php)

请添加图片描述

Ⅰ. 绕过后缀名检测

从数组名(有"accepted")来看,本Pass应该是个白名单验证,考虑从中选择某个后缀名进行使用。

请添加图片描述

当然,这里用图片马也是可以的。但是,如果我们使用图片马,那题目中的改名貌似就没有意义了。

而例如".rar",正好是apache无法识别的后缀名,所以我们直接利用Apache解析文件后缀名的特性(Apache从右往左解释文件名,遇到无法识别的后缀名直接跳过,如上传文件:“file.php.rar.xyz”,其中Apache不能识别".xyz",那么转而尝试去识别".rar",但Apache同样不能识别".rar",继续跳过,所以最终Apache将文件名解析为"file.php"):

我们这里上传webshell_creater.php.rar。

Ⅱ. 条件竞争利用

除了要利用文件包含漏洞之外,本Pass与Pass-18无异。

①以下是上传webshell_creater.php.rar的请求。
请添加图片描述

②以下是访问webshell_creater.php.rar的请求,使用了之前的文件包含漏洞。

请添加图片描述
将两个请求包一直重发即可。

第十九关

空格绕过、点绕过,大小写绕过等等均可。
请添加图片描述

本Pass的代码中,除了对保存名的特殊可解析后缀名进行了黑名单检测外,基本没有任何防御措施…

请添加图片描述

第二十关——一道CTF题

审计代码:

请添加图片描述

请添加图片描述

所以应上传一个"数组"(array[0]=>‘webshell.php’, array[1]=>‘png’)。

请添加图片描述

构造如上图这样的POST提交,即可成功上传webshell。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Neonline

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值