upload靶场前10关:
Pass-01:
意思就是上传的文件会在客户端检查之后,才会传输到服务端。
有文件后缀限制如下图:
一句话木马如下图:
上传该文件用bp抓包后修改文件后缀为.php如下图:
修改后放包,然后在新标签页打开图片如下图:
已经执行了shell2.png文件中的内容,说明存在文件上传漏洞。
Pass-02:
因为是在服务端检查所上传文件,所以可以直接上传.php后缀的文件,在文件传输的过程中用bp抓包并修改文件类型便能骗过服务器。
上传文件shell2.php并用bp抓包并修改文件类型如下图:
修改后放包,然后在新标签页打开图片如下图:
系统解析了所上传文件shell.php文件的内容,说明存在文件上传漏洞。
Pass-03:
这是一个黑名单验证,既然禁止上传.php后缀文件,那就上传.php5文件如下图:
所上传文件shell2.php5同样可以被解析。但前提是需要修改phpstudy的配置文件php.ini,确保 short_open_tag 被设置为 On。同时还要修改phpstudy的配置文件httpd-conf,确保AddType application/x-httpd-php选项中有.php5如下图:
温馨提示:新版的phpstudy8.1.1.3不行。
Pass-04:
这一关比上一关过滤了更多的后缀,所以要用到以下方法,首先还是要修改配置文件如下图:
修改配置文件的目的时允许使用 .htaccess 文件来覆盖此目录中的配置。
.htaccess 文件的内容如下图:
意思就是之后上传的.png文件会被当做.php文件来执行。
先上传.htaccess 文件,再上传shell2.png文件就可以被解析了,如下图:
Pass-05:
看源码发现这一关过滤了很多包括.htaccess,但是没有过滤.user.ini。
先上传.user.ini文件,.user.ini文件内容如下图:
再上传一个命名为shell2.png的文件,结果就是所有的php文件都会自动包含shell2.png。然后在新标签页打开图片,但是需要把图片改为readme.php,因为此时readme.php文件中已经包含了图片的内容,如下图:
这一关需要把php版本改为有nts的那个,如下图:
Pass-06:
这一关特别过滤了.htaccess和.ini文件,如下图:
但是没有使用strtolower()函数进行强制大小写转换,所以只需要把.php后缀改为.Php就可以完成绕过,如下图:
这关需要把php版本改回没有nts的那个,如下图:
Pass-07:
这关是黑名单绕过,看源码发现没有使用trim()函数去除空格,所以上传shell2.php文件并用bp抓包,如下图:
修改包的内容,在文件名后面加一个空格,如下图:
系统检测的时候会加上这个空格,但是在解析的时候却会忽略这个空格,然后在新标签页打开文件如下图:
Pass-08:
这一关黑名单验证没有使用deldot()函数过滤文件名末尾的点,所以上传shell2.php文件并用bp抓包,如下图:
修改包的内容,在文件名后面加一个点,如下图:
放包,在新标签页打开图片,就会看到shell2.php文件的内容已被解析,如下图:
Pass-09:
这一关黑名单验证可以使用::$DATA这样的特殊字符绕过,在文件名后面加上这一串特殊字符,Windows系统就不会检查后缀名而是当成文件流来处理。
所以上传shell2.php文件并用bp抓包,如下图:
修改包的内容,在文件名后面加上::$DATA,如下图:
然后放包,在新标签页打开图片,在路径上要把所加的特殊字符去掉,如下图:
Pass-10:
查看源文件可看到如下一行:
deldot()函数会去除文件名末尾的点,并且是从后向前检测,遇到空格就会停止检测,所以可以在上传的文件名后面加上点空格点来绕过检测。
上传shell2.php并用bp抓包,修改包如下图:
然后放包,在新标签页打开图片,就会看到shell2.php文件的内容已被解析,注意看现在的文件名后面还留了一个点,如此便说明它是从后往前检测并且遇到空格停止,如下图: