upload-labs pass-10

这关源码可以看到,过滤了很多,大小写,空格,点,::DATA,那我们该怎么绕过呢。

        这里我们可以使用Apache的解析漏洞、00截断绕过以及特殊字符组合绕过,当然,这里重点介绍组合绕过。解析漏洞和00截断在之前的关卡使用过,后续也还有这类题目,我们多介绍一种思路。

        我们观察源码可以发现,它的处理逻辑是先删除文件末尾的点,然后提取最后一个点后面的字符作为需要检测的后缀,然后转为小写,去除::DATA字符串,最后去空。既然它只处理一次,那么我们可以多输入一些特殊字符,下面有输入abc.php. .的解析过程。

处理过程

1. 初始文件名

$file_name = "abc.php. ."

2. 删除末尾的点 deldot($file_name)

$file_name = deldot($file_name); // "abc.php. ." → "abc.php. "

这个函数只删除文件名末尾的点,所以最后一个点被删除,但中间的点保留。

3. 提取扩展名

$file_ext = strrchr($file_name, '.'); // ". "

strrchr 查找最后一个点号的位置,返回 .(点+空格)

4. 转换为小写

$file_ext = strtolower($file_ext); // ". "

仍然是 .(点+空格)

5. 去除 ::$DATA

$file_ext = str_ireplace('::$DATA', '', $file_ext); // ". "

没有 ::$DATA,保持不变。

6. 首尾去空

$file_ext = trim($file_ext); // "."

关键步骤trim 去除了空格,现在 $file_ext = "."

所以,我们还是burp抓包然后修改文件名来绕过。

上传后我们可以直接访问这个文件。

解题点:特殊字符组合绕过。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Forfun_tt

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

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

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

打赏作者

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

抵扣说明:

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

余额充值