变量覆盖

变量覆盖

  • 变量覆盖指的是可以用我们的传参值替换程序原有的变量值

漏洞场景

  1. $$使用不当
<?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 .

  1. 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
  1. 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()函数

开启了全局变量注册

posted @ 2022-07-12 17:21  余星酒  阅读(356)  评论(0)    收藏  举报