extract变量覆盖
```<?php
$flag='xxx';
extract($_GET); //直接将 $_POST 和 $_GET 中的变量解析出来,不需要我们手工赋值处理。如果变量重名,那么就会把GET请求中的变量覆盖同名变量
if(isset($shiyan)) //检测变量是否已设置并且非 NULL
{
$content=trim(file_get_contents($flag)); //file_get_contents整个文件读入一个字符串中,也就是把变量的内容作为字符串输出;trim移除flag变量内容左右两边的变量符号
if($shiyan==$content)
{
echo'flag{xxx}';
}
else
{
echo'Oh.no';
}
}
```?>
因为extract()会把符号表中已存在的变量名的值替换掉,所以制造GET请求?shiyan=&flag=也就是利用新传入的值为空的flag替换原有的flag的值。构造空等于空,成功输出flag的值


浙公网安备 33010602011771号