写过之前buu的那道include后对伪协议有了一点了解,看到file这个词,感觉是要读取文件。
打开后f12,能看到一个php文档
点进去之后就这样了
因为之前看了伪协议的原因,所以尝试了一下
?file=data://text/plain [post]<?php phpinof()?>
和 ?file=php://input [post]<?php phpinof()?>
两个结果都是
(为什么不尝试php://filter那个,因为include那题用过了,我也没想到这题也是)
然后小瑶就去看大佬们的wp了
发现要先抓包(因为action.php访问时间很短,跳转到end.php后什么也没有),之后就乖乖去抓包了
抓包后就能看到一个 secr3t.php文档,尝试进行访问
访问后可以看到一段php代码,提示flag放在了flag.php里,然后我们访问flag.php
查看源代码,发现前端中没有显示flag,由于之前secr3t.php里有一个文件包含漏洞(flag可能写在了php代码里面)
仔细分析一下代码,传入的file经过了过滤(还刚好过滤了之前小瑶一开始猜测的两个伪协议,真是让人头大!)
因为没有过滤filter
所以可以和buu上一题include构造的payload一样
url/secr3t.php?file=php://filter/convert.base64-encode/resource=flag.php 获得一个用base64编码的php代码
最后直接base64解密即可获得flag
提供一个大佬细节