pass20相比前一关把检测保存文件名后缀的从黑名单变成白名单了
这一关会先检查上传文件的content-type是否合法,然后会把保存的文件名进行切割(假设这里保存的为123.png)那么就分为123[0],png[1]俩个数组,然后对最后一个数组进行检测,如果合法就会把第一位数组合和所有数组数量减一的那个合并,上面一共俩个数组2-1=1所以用123[0]和png[1]合并变成了123.png(以点分割,最后再加上点),那么漏洞就出来了,我们在数据包里面在加一个数组png[2]那么这个数组就变成了最后一个数组,检测的也就是这个,然后把数组[0]改为完整的文件名就是123.png[0]然后再把这个完整的文件名后缀改为可以直接连接123.php木马文件,那么这个时候数组[1]不存在,这时候只有两个数组123.php[0],png[2],最后合并的文件名就为第一个数组123php[0]加上2-1=1但是[1]这个数组根本不存在所以,然后在俩个数组中间加个点,所以最后传上去的文件名就为123.php.但是windows特性会把这个点给删掉,所以就可以正常连接。
接下来进行修改数据包,改之前:
改之后:
连接成功: