前言:这段时间刚开始做Jarvis OJ的web题,遇到一个ISCC2016的一个文件上传类的题,之前没见过。so,记录一下。

解题

m0re
按照文件上传的套路来进行解题,PHP文件不可以上传,只能上传jpg和GIF类型的图片。
尝试1:一句话木马,直接上传,发现前端验证。
尝试2:修改后缀,burp抓包改回php,发现后端验证或者文件类型验证。
尝试3:加上GIF89A标志。仍然失败。
图片马需要结合文件包含漏洞,暂时先放着。
先传一张正常的图片,成功上传会返回图片id。在view页面查看图片
m0re
查看源码,发现文件储存目录uploads
m0re
可以直接访问到图片,尝试上传图片马,在burp中拼接一句话。再次上传,但是无法解析。
观察上传和查看的两个URL

http://web.jarvisoj.com:32785/index.php?page=submit
http://web.jarvisoj.com:32785/index.php?page=view

验证是否存在文件包含漏洞
m0re
发现网站根目录/opt/lampp/htdocs/index.php
还有一个,是page传入的参数后面都自动添加php后缀。
尝试使用php伪协议读取网站源码,
m0re
直接包含/opt/lampp/htdocs/index
m0re
读取上传的jpg文件时,发现也自动添加php后缀。
m0re
然后考虑截断%00

m0re
然后返回的也是should not,这里是一句话出了问题,所以尝试其他类型的木马。(看大师傅wp说是禁止了php标签。所以构造没有<?标签的一句话)下面是一个一句话木马,尝试

<script language='php'>phpinfo();</script>

制作一个图片马,上传成功后,自动解析
m0
思路就这样,然后看一下,这道题可以学到什么知识。

知识点(题后总结)

解题的时候,思路很重要。一步一步考虑,文件上传题,先做一些简单的上传验证一下各种过滤方式,看看什么被限制了,然后,根据前面总结的进行绕过,寻找可以利用的点,拿到flag。
这道题连接不上菜刀,看大师傅的wp说是绕过。这个目前还没了解过。
闲话少说,下面看看知识点

  1. 关于<script language="php"><script>,在PHP7.0更新后就被废除了。
    m0re
  2. 然后一篇文章—那些强悍的PHP一句话后门

文件上传的姿势遇到再补充。