xctf easyupload
easyupload
本题抓包存在黑名单的会xxxx is wicked。几次修改知道有如下黑名单
检查文件内容是否有php字符串
检查后缀中是否有htaccess或ph
检查文件头部信息
文件MIME类型
- 第一条可用<?= phpinfo();?>绕过
- 第二点可以通过上传.user.ini以及正常jpg文件来进行getshell,可以参考以下文章.user.ini文件php后门
- 第三点绕过方式即在文件头部添加一个图片的文件头,比如GIF89a
- 第四点绕过方法即修改上传时的Content-Type
.user.ini文件
- 除了主 php.ini 之外,PHP 还会在每个目录下扫描 INI 文件,从被执行的 PHP 文件所在目录开始一直上升到 web 根目录
- 实际上,除了PHP_INI_SYSTEM以外的模式(包括PHP_INI_ALL)都是可以通过.user.ini来设置的
指定一个文件,自动包含在要执行的文件前,类似于在文件前调用了require()函数。而auto_append_file类似,只是在文件后面包含。 使用方法很简单,直接写在.user.ini中:
auto_prepend_file=01.gif
01.gif是要包含的文件。
所以,我们可以借助.user.ini轻松让所有php文件都“自动”包含某个文件,而这个文件可以是一个正常php文件,也可以是一个包含一句话的webshell
getshell
某网站限制不允许上传.php文件,你便可以上传一个.user.ini,再上传一个图片马,包含起来进行getshell。不过前提是含有.user.ini的文件夹下需要有正常的php文件
在服务器中,只要是运用了fastcgi的服务器就能够利用该方式getshell,不论是apache或者ngnix或是其他服务器。
这个文件是php.ini的补充文件,当网页访问的时候就会自动查看当前目录下是否有.user.ini,然后将其补充进php.ini,并作为cgi的启动项.
再上传一个a.jpg,内容为
GIF89a
或者一句话马。
查看上传位置,在uploads/index.php,蚁剑连接flag如下: