BUU-Web-EasyCalc (buuweb 精通各种审计)
BUU-Web-EasyCalc (buuweb 精通各种审计)
访问后,可以通过源码发现是通过encodeURIComponent对内容编码后发送到calc.php内
encodeURIComponent
简而言之就是对发送的字符串进行urlencode编码
如【?】就变成了【%3F】
可以使用在线的urlencode/urldecode工具,也可以使用Python或者其他的语言进行加/解密
访问calc得到源文件
我们可以发现其中的函数
show_source:highlight_file的别名,作用都是 将__FILE__中的内容显示出来,就是我们看见的这个源代码
foreach:将$blacklist中的内容依次取出 作为$blackitem
preg_match:对目标进行正则匹配
对取出的内容进行判断
“.”的作用是拼接前后内容,拼接后就是/$blackitem/m
/[content]/m,不对大小写敏感
eval:执行收到的php指令
第二步:漏洞测试
在这个地方卡了好久,最后查阅WriteUP发现,WAF和我们现在看见的源文件不是同一个文件。
这里是一个PHP解析漏洞,利用PHP对URL获取的$_GET/$_POST以数组存储时会先进行一次转换如【?test=23333】会转换为【Array([test] = 2333)】
我们可以使用parse_str来模拟url解析的过程
这里我们可以看出在urlcode为[20,26,00,3d]时会删去,为[20,2b,2e,5b,2f]会转化为“_”
因此我们可以构建payload
【?%20num=var_dump(scandir(chr(47)))】查看根目录,因为“”和“ / ”被过滤了,所以我们这里使用chr函数对ascii码进行编码绕过
可以获取到根目录下存在f1agg文件
然后构建payload【?%20num=var_dump(file_get_contents(chr(47).f1agg))】
最终拿到flag
最后调用的几个函数
chr ([ascii_code]):将ASCII码转化为字符
scandir( [path] ):列出指定[path]路径下的文件和目录
var_dump:将Arry类型的内容取出
以上就是(BUU-Web-EasyCalc (buuweb 精通各种审计))全部内容,收藏起来下次访问不迷路!