第8关(点绕过)
我们查看代码,发现代码和其他关相比少了删除点的代码,那我们就可以使用点绕过黑名单
由于系统特性,我们不能创建一个带有点的文件后缀,所以我们只能使用抓包工具修改数据
上传成功,以防万一,我们还可以找到文件存储的路径,看文件有没有上传成功,显示成功了
第9关(::$DATA绕过)
查看源代码,发现还是少了一行去除字符串::$DATA的代码
那我们可以使用::$DATA绕过黑名单
::$DATA绕过原理:php在Windows系统中会把::$DATA之后的数据当成数据流处理,不会检测文件的后缀名,同时也不会改变文件名
我们查看文件保存路径,找到上传的文件,发现名字发生了改变,有人可能会问不是说不会改变名字吗,为什么变了?这个名字发生改变不是因为::$DATA的原因,这是因为下面的代码会随机给一个数字重新命名文件名
第10关(点空格绕过)
我们观察这关的代码,发现这次代码什么都没缺,很像之前的一关,发现就是一样的,又是只对空格和点只过滤一次,那我们又能用点加空格加点绕过了(好吧,我也不记得我用了多少这个方法绕过了)
第11关(双写后缀名绕过)
查看代码,我们会发现代码虽然少了一些,但是按照之前的方法还是不能绕过黑名单上传文件,主要是因为下面这行代码把黑名单中的文件后缀名都用空格替换掉了,但只替换了一次,那我们不就可以用双写后缀名绕过了
这里代码会先把pphphp里面的php过滤掉并用空格替代,然后就剩下了p hp,因为系统特性,又会把空格去掉,所以就剩下php了