一次不一样的文件上传
前言:这段时间刚开始做Jarvis OJ的web题,遇到一个ISCC2016的一个文件上传类的题,之前没见过。so,记录一下。
解题
按照文件上传的套路来进行解题,PHP文件不可以上传,只能上传jpg和GIF类型的图片。
尝试1:一句话木马,直接上传,发现前端验证。
尝试2:修改后缀,burp抓包改回php,发现后端验证或者文件类型验证。
尝试3:加上GIF89A标志。仍然失败。
图片马需要结合文件包含漏洞,暂时先放着。
先传一张正常的图片,成功上传会返回图片id。在view页面查看图片
查看源码,发现文件储存目录uploads
可以直接访问到图片,尝试上传图片马,在burp中拼接一句话。再次上传,但是无法解析。
观察上传和查看的两个URL
http://web.jarvisoj.com:32785/index.php?page=submit
http://web.jarvisoj.com:32785/index.php?page=view
验证是否存在文件包含漏洞
发现网站根目录/opt/lampp/htdocs/index.php
还有一个,是page传入的参数后面都自动添加php后缀。
尝试使用php伪协议读取网站源码,
直接包含/opt/lampp/htdocs/index
读取上传的jpg文件时,发现也自动添加php后缀。
然后考虑截断%00
然后返回的也是should not,这里是一句话出了问题,所以尝试其他类型的木马。(看大师傅wp说是禁止了php标签。所以构造没有<?
标签的一句话)下面是一个一句话木马,尝试
<script language='php'>phpinfo();</script>
制作一个图片马,上传成功后,自动解析
思路就这样,然后看一下,这道题可以学到什么知识。
知识点(题后总结)
解题的时候,思路很重要。一步一步考虑,文件上传题,先做一些简单的上传验证一下各种过滤方式,看看什么被限制了,然后,根据前面总结的进行绕过,寻找可以利用的点,拿到flag。
这道题连接不上菜刀,看大师傅的wp说是绕过。这个目前还没了解过。
闲话少说,下面看看知识点
- 关于
<script language="php"><script>
,在PHP7.0更新后就被废除了。
- 然后一篇文章—那些强悍的PHP一句话后门
文件上传的姿势遇到再补充。