变量覆盖
变量覆盖
- 变量覆盖指的是可以用我们的传参值替换程序原有的变量值
漏洞场景
- $$使用不当
<?php
$a = 1;
foreach(array('_COOKIE','_POST','_GET') as $_request) {
foreach($$_request as $_key=>$_value)
{$$_key=addslashes($_value);}}
echo $a;
?>
-
这个代码会接受我们的GET提交、POST提交、COOKIE参数,将这个接受来的参数依次放入$_request$_key=>$_value 这是个数组解析,实际上就是键值分离正
常而言$a = 1是一个定值,但是因为$$_key的缘故,当我传参a=2;那么$$_key=addslashes($_value);就变为了$a = 2 .
- extract()函数
- 数组中将变量导入到当前的符号
<?php
$a = "1";
$my_array = array("a" => "Cat","b" => "Dog", "c" => "Horse");
extract($my_array);
echo "\$a = $a; \$b = $b; \$c = $c";
?>
- 运行结果:$a = Cat; $b = Dog; $c = Horse
- parse_str()函数
- 将字符串解析成变量
<?php
parse_str("name=zkaq&&age=60");
echo $name."<br>";
echo $age;
?>
- 输出了zkaq和60
- 那么parse_str("name=Bill&age=60") 相当于完成了$name ='zkaq'和$age ='60'
import_request_variables()函数
开启了全局变量注册

浙公网安备 33010602011771号