文件上传
什么是文件上传
文件上传的原理
在文件上传的功能处,若服务端脚本语言未对上传的文件进行严格验证和过滤,导致恶意用户上传恶意的脚本文件时,就有可能获取执行服务端命令的能力,这就是文件上传漏洞。
upload-labs搭建
upload-labs搭建与sqli-labs搭建方法类似,upload下载网站,下载后压缩到PHPstudy的WWW文件夹里就行了。
输入地址
http://localhost/upload-labs-master或
http://127.0.01/upload-labs-master
出现下图就是搭建完成
upload1~5关通过方法
准备过程
新建一个记事本,写好一句话的木马用于上传
<?php @eval($_POST['a']) ?>
然后把格式改成php
开始上传
第一题
我这里用的火狐浏览器
F12找到关于上传的源代码,发现允许上传文件的类型有3个
既然没有php格式的,那就直接改源代码填上php格式
更改好后就可以上传木马了
第二题
先查看源代码
查看提示
百度搜索什么是MIME
找到的网站
由上图得,先抓包,修改content-type为图片类型:image/jpeg、image/png、image/gif
的一个
进入upload文件夹里就能看见上传成功
第三关
查看源代码
黑名单绕过,不允许上传.asp,.aspx,.php,.jsp
后缀的文件,但可以上传.php3,.php5,.phtml
的文件,所以可以把木马文件后缀名改成可以上传的文件
进入upload文件夹里就能看见上传成功
第四关
查看源代码
还是黑名单,不过几乎把所有有问题的后缀名文件都ban了
不过还好,还算有点良心,还剩一个没有ban,就是.htaccess
首先写一个后缀名.htaccess内容如下的文件:
SetHandler application/x-httpd-php
这样所有文件都会解析为php
第五关
让我们上传目录存在的php文件
把那个文件复制到桌面上
查看源代码,好家伙,不仅把其他的ban了还把htaccess给ban了
我看其他人的解题过程,说可以用大小写绕过,到我这连大小写都绕不了了,源代码写着可以转化为小写。
然后我又了解到可以将后缀名改为php . . (注意,中间有空格)
那就抓包,改后缀名呗
上传成功