微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

upload-labs-master 文件上传过程总结

文件上传训练:

在做完了sqli-labs 之后,咋们来看看这个上传文件的题。

第一关:

他的界面直接提示着,请选择上传图片,肯定就会有过滤的,咋们先上传一个.PHP文件试试水。果然,报错了,说是上传jpg,gif,png 格式的文件,好办,去bp上修改一下,查看源码,这儿是前端验证。如果是前端验证,咋们就把PHP文件的后缀改为他支持的格式,然后在bp 上再改回来就欧克了。

上传成功,然后用菜刀连接,直接连接成功。

第二关:

在这一关咋们看了一下源码,发现这一关是检查文件扩展名Content-type, , 照片的文件扩展名是 image/jpeg/gif/png。PHP文件扩展名是application/octet-stream,所以这边就有两种上传方法,第一种是上传图片马,然后在bp上修改文件后缀名,就和上一关一样了,还有一中是直接上传PHP文件,在bp修改文件扩展名为照片的文件扩展名。用菜刀可以连接。

第三关:

这一关看了源代码,发现过滤挺多的,首先是过滤文件名的空格,然后删除文件名的最后的点,删除空格和删除点这个是为了防止iis7.5的解析漏洞,就是在文件名后面加上点或者空格会被windows解析成正常的,不是iis本身的漏洞。 然后匹配到点的后面的字符串,也就是保留文件名。 然后再将文件名转换成小写,这就是防止大小写过滤,再去去除字符串 ::$DATA ,,,这个也是为了防止解析漏洞,因为::$DATA会将后面的内容转换为文字流,这个只能在widows上有,最后再去除一下空格。然后判断这个文件名是不是在黑名单中,如果在,上传不成功,如果不在,将文件重新命名为时间戳文件上传

这边我尝试我几种绕过姿势,发现都是可以,接下来我们一一讲解:

  1. 咋们可以发现把::$DATA过滤了,但是只是过滤了一遍,所以我们可以双写来建立这个字符 修改文件名为 test.PHP:

    版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐