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的值

posted @ 2020-11-15 20:11  网抑云黑胶SVIP用户  阅读(113)  评论(0)    收藏  举报