Pass-01
观察页面,发现需要上传一个文件,先尝试上传一个文件,出现了这个提示
根据这个提示我知道了上传途中对文件的后缀进行了验证。用弹窗进行错误提示的话证明是运用了前端验证。
将要上传的文件后缀名修改成页面允许上传的类型,这样在点击上传后就可以通过前端的验证,用burp工具进行抓包,在burp中将文件后缀名改回原本想要上传的格式,再进行上传,这样就可以上传我们想要的类型文件而不会被前端的验证拦截。
这里代表文件上传成功
上传的文件在upload目录下。(如果没有的话在WWW中的upload-labs里自己手动建一个,不然会报错),最终上传的文件为php类型的文件。
Pass-02
进入页面后发现还是需要上传一个文件,先上传看看是否有提示
上传了一个文件后缀为.php的文件后提示类型错误,错误回显的方式不是弹窗,是页面直接提示,所以不是前端验证。查看一下源码。
其中如图中框住的代码部分可以看出,上传文件的途中是验证了content-type,并且固定了可以上传的文件类型。
接下来要绕过就很简单了,我们只需要用burp工具抓包,抓到之后修改content-type的类型为允许上传的类型即可,也就是判断语句中写到的类型。
上传文件成功
Pass-03
本关依旧是要上传一个脚本文件,我们查看源码。
从源码中我们可以看出设定了黑名单,'.asp','.aspx','.php','.jsp'后缀的文件都不允许上传,并且会检查大小写、删除点和空格。
想要绕过黑名单可以使用脚本的其他拓展名。
这里我想要上传一个'.php'后缀的文件,所以列举一些php文件的其他拓展名。
.php .phtml .phps .php5 .pht
修改拓展名再进行上传即可上传成功,上传文件的位置依旧是upload文件夹。