开启环境得到一个界面进行js审计后发现什么东西也没有
接着进行目录扫描
发现一个/orzorz.php目录,进入访问
接下来我们解释下这段代码
-
第一行
error_reporting(0);
关闭了 PHP 的错误报告,这意味着在脚本执行过程中不会显示任何错误信息。 -
通过
isset($_GET['cxk'])
检查是否存在名为'cxk'
的 GET 参数。GET 参数是通过 URL 的查询字符串传递给脚本的数据。 -
如果存在
'cxk'
的 GET 参数,将其值赋给变量$cxk
。 -
使用
file_get_contents($cxk)
函数读取$cxk
变量中指定的 URL 或文件的内容。 -
如果读取的内容等于字符串
"ctrl"
,则输出变量$flag
的值。这里假设变量$flag
包含了某个敏感信息或秘密。 -
如果读取的内容不等于字符串
"ctrl"
,则输出字符串"洗洗睡吧"
。 -
如果不存在
'cxk'
的 GET 参数,则输出字符串"nononoononoonono"
。
通过分析我们可以利用file_get_content()函数配合php伪协议来获取flag
data://
自PHP>=5.2.0起,可以使用data://数据流封装器,以传递相应格式的数据。通常可以用来执行PHP代码。一般需要用到base64编码
传输
所以该题我们可以构造payload:
/orzorz.php?cxk=data://text/plain,ctrl
或者:/orzorz.php?cxk=data://text/plain;base64,Y3RybA==