写在前面
下面几道题目与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()函数的特性,删除时,会从后向前扫描,扫描到空格时会停下。所以,可以使用. . 的方式进行绕过,当然,你在访问和连接时都要删除一个点 灰色高亮处就是修改的地方。 记得在连接时要少掉一个点。
|