Pass-01 前端js绕过
拿到题目看hint提示判定在前端,用burp代理,将1.php后缀名更改为.png格式即可通过前端检测,而后在burp中对修改包内容,将1.png改为1.php即可绕过前端js检测
Pass-02 MIME验证
上传php后显示不成功,但是上传图片显示正常,即使用burp抓包后发送到repeater,将Content-Type内容类型更改为:image/jpeg(上传图片拦截包后作为参考),然后forward,即可成功上传
Pass-03 黑名单绕过
这里是根据后缀名特征进行拦截的,此类情况即可直接修改后缀名(例如php可以改为php3,php4,php5一类的文件,在后面还有一道可以直接修改大小写即可通过检测)
Pass-04 黑名单绕过-.htaccess
此处是根据.htaccess的分级目录设置的方法,利用了后缀名黑名单中缺少htaccess的限制
.htaccess文件(或者"分布式配置文件"),全称是Hypertext Access(超文本入口)。提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。
上传一个.htaccess文件,内容为
<FilesMatch “up”> #“up”是可以上传的文件名
SetHandler application/x-httpd-php
此时将1.php更名为up.php,即可成功上传
Pass-05 黑名单验证-user.ini
验证发现可以上传图片,但是上传1.php失败,上述方法均不可用,因此可以上传一个user.ini(user.ini实际上是一个可以由用户自定义的php.ini),内容如下
auto_prepend_file=1.gif
即为让所有的php文件都自动包含1.gif文件,此时将phpinfo.php重命名为1.gif并上传,然后访问./upload/readme.php,即成功
Pass-06 黑名单验证-大小写绕过
将.php后缀更改为.Php后缀即可通过检测