什么是文件上传漏洞:
文件上传漏洞是指由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。“文件上传”本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器的处理逻辑做的不够安全,则会导致严重的后果。
第一关:
关闭js
创建一句话木马,
首先创建一个.php文件,写入一句话木马,进行上传;发现页面弹出:
通过查看网页源码发现有一个checkFile 函数获取了文件名称,并判断了文件类型(白名单)。
该文件并没有在白名单里面,所以被禁止上传。白名单我还不知道怎么绕过。
解决方案:
js是前端页面独有的,可以尝试关闭浏览器的js功能
关闭js功能后发现除上传按钮外其他按钮都不能点(js),再次上传一句话木马文件(我的文件名是web.php)发现成功上传。
不能使用eval---可以使用assert:
?0=assert&1=phpinfo();
第二关:
修改文件类型
再次尝试使用web.php, 提示文件类型不正确;查看源码,没找到checkFile,可能在后端验证;
解决方案:
提示文件类型不正确,尝试一下改文件类型
使用抓包软件,更改web.php的文件类型为image/jpeg
放包后发现上传成功
第三关:
上传web.php,显示不允许上传.....;说明是黑名单限制
解决方案:
上传web.php,发现这一关限制后缀,查看源码发现这一关是黑名单限制,限制.asp、.aspx、.php、.jsp。
尝试修改后缀为:php3,php4,php5,phtml。成功上传
第四关:
查看提示,可以看到这一关使用了更多的黑名单限制,上一关的php3,php4等都被加入了黑名单,所以本关不使用修改后缀绕过。
解决方案:
尝试使用.htaccess绕过。
介绍一下什么是.htaccess:主要的作用:URL重写、自定义错误页面、MIME类型配置以及访问权限控制等。主要体现在伪静态的应用、图片防盗链、自定义404错误页面、阻止/允许特定IP/IP段、目录浏览与主页、禁止访问指定文件类型、文件密码保护等。
.htaccess的用途范围主要针对当前目录。可以把php后缀隐藏起来
创建一个.htaccess文件,写入SetHandler application/x-httpd-php(将该目录和子目录的所有文件映射为php文件)
先上传.htaccess文件,因为它可以把任何文件都解析为.php文件,所以我们将web.php修改为web.jpg,再上传web.jpg文件,上传成功,最后访问web.jpg时会自动解析为php文件。
第五关:
查看源码,发现限制了htaccess文件,但是没有大小写限制,因为php没有大小写限制,所以修改大写PHP,成功上传。
第六关:
查看提示,是黑名单限制,
查看源码,发现没有空格过滤,在Windows中,空格在存储时会自动删除
解决方案:
不能在修改文件名后面加空格,也会被删除,所以使用抓包软件进行抓包,然后 在文件名”web.php“后加个空格,成功上传。
第七关:
与第六关相似,查看源码发现这一关没有删除 . 的代码,在Windows中文件存储时会自动删除后缀后面的“.”,同样抓包修改后缀,上传成功
第八关:
与前两关类似,这关少了::$DATA的删除。
当php在windows环境的时候,如果文件名+ “::$DATA" 会 把 "::$DATA" 之后的数据当成文件流处理,不会检测后缀名.且保持"::$DATA"之前的文件名
所以跟前两关一样的步骤
第九关:
查看提示,这一关使用了白名单限制,
查看源码,它先是将文件后的“.”依次删除后再进行下一步,但是deldot函数在遇到空格时会停住
所以我们将web.php文件后缀添加“. .”的形式绕过同样抓包修改
上传成功