文件上传漏洞练习 upload-labs(6~10)【大小写绕过,空格绕过,打点绕过,特殊字符绕过,去点绕过】
写在前面
下面几道题目与php源码有关,如果你对php并不是很熟悉,或者看起来较为吃力,可以点击下方
源码分析链接
会有基础知识准备,同时在pass-03中有源码分析和对各个函数的讲解。
Pass-06
无论是提示还是源码,你都会发现对大小写限制并不完全。
在源码中缺少了全部转换为小写的函数。strtolower()
上传一个1.Php或者1.phP即可。
直接使用工具连接即可。
Pass-07
在源码中缺少了除去空格的函数
trim()
那么我们在上传名中加上一个空格就行了(抓包完成,你重命名肯定是不行的)
在灰色高亮位置,明显在文件后缀上加上了空格,上传后会自动去空,能够正常解析,这时你用工具连接即可
Pass-08
源码中失去了deldot()这个函数,无法自动去除文件后缀的点,那么我们在文件名后面加上一个点,同时满足提示要求“屏蔽了所有可解析后缀”
在pass-07和pass-08中其实都是利用重命名当中的小规则。
当然你也只能抓包修改。
在灰色高亮处,我加上了一个点,并且当你在网页端访问你上传的图时,你会发现加上点与否都能够访问得到。
显然,无论加点与否都能够得到200的正常返回。就是利用了这个书写的小漏洞。
Pass-09
根据源码,没有对特殊字符::$DATA
进行处理
补充知识:
php在window的时候如果文件名+"::$DATA"
会把::$DATA
之后的数据当成文件流处理,不会检测后缀名,且保持"::$DATA
"之前的文件名 他的目的就是不检查后缀名。
灰色高亮行就是修改后的样子。
唯一注意的是在用工具连接时要去掉::$DATA
后缀进行连接
直接php文件连接即可。
Pass-10
源码已经和之前的差不多了,这里是利用deldot()函数的特性,删除时,会从后向前扫描,扫描到空格时会停下。所以,可以使用. .
的方式进行绕过,当然,你在访问和连接时都要删除一个点
灰色高亮处就是修改的地方。
记得在连接时要少掉一个点。