套娃
——伪协议、加密、Bypass
查看源码发现这一串代码,
substr_count() 函数计算子串在字符串中出现的次数
$_SERVER['QUERY_STRING']
例如:
http://localhost/aaa/index.php?p=222&q=333
结果:
$_SERVER['QUERY_STRING'] = "p=222&q=333";
想绕过去就必须满足我们传入的参数没有_
,而且得通过下面代码的匹配,这里就会有一个矛盾,GET传入参数的是b_u_p_t
,含有这个_
,如何先将这个绕过,后面的绕过正则只需要%0a
截断就可以,查了百度,发现可以使用.
来代替这个符号,所以payload为:
?b.u.p.t=23333%0a
出现下一关
发现需要Local access,所以应该是需要修改XFF的,而且查看源码发现
直接在控制台执行
POST进去一个Merak,传入参数之后就可以看到源码
仔细分析一下代码会发现,那个change函数就是分割一下字符继续往上加密的,如果我们file传入的是flag.php
,那么最后呈现的绝对不是这个文件了,所以我们需要对这个函数进行一下改动让输出的字符最后变成flag.php
,这也很简单
只