开启NSSCTF靶场,打开链接:
这段php代码的大致意思如下:
1、先判断是否存在名为filter的GET参数,如果存在,则继续执行后续代码,并将filter参数的值赋给变量$file。
2、使用正则表达式/flag/i检查$file中是否包含字符串flag。如果$file中不包含flag,则调用die("error")终止脚本并输出error。如果$file中包含flag,则使用include函数包含并执行$file指定的文件。
3、如果filter参数不存在,则调用highlight_file(__FILE__)函数,高亮显示当前文件的源代码。
直接构造payload:
?filter=php://filter/read=convert.base64-encode/resource=flag.php
得到flag:
NSSCTF{69c25bdc-568c-4068-b3b7-64faff6fa943}