愿浪飒精神伴你左右,网络安全之路任重而道远。

变量覆盖

Web渗透学习笔记 langsa 3年前 (2022-01-17) 652次浏览 0个评论

什么是变量覆盖

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

变量覆盖漏洞大多数由函数和特殊符号使用不当导致。

介绍几个函数和写法

  1. $$

    $$写法为可变变量,类似于套娃,有点像二重积分的写法,一个可变变量获取了一个普通变量的值作为这个可变变量的变量名。

    eg:https://www.php.net/manual/zh/language.variables.variable.php

  2. extract()

    从数组中将变量导入到当前的符号表

    eg:https://www.runoob.com/php/func-array-extract.html

     "Cat","b" => "Dog", "c" => "Horse");
    extract($my_array);
    echo "\$a = $a; \$b = $b; \$c = $c";
    ?>
    
       #输出:$a = Cat; $b = Dog; $c = Horse;
  3. parse_str()

    parse_str() 函数把查询字符串解析到变量中.

    注意:parse_str()不会验证当前变量是否存在,所以直接覆盖掉已有变量。如果未设置 array 参数,由该函数设置的变量将覆盖已存在的同名变量。

    eg:https://www.runoob.com/php/func-string-parse-str.html

    ";
    echo $age;
    ?>
    
    #name=Peter&age=43变成了$name和$age
    #输出:
    #    Peter
    #     43      
  4. import_request_variables()

    import_request_variables() 函数将 GET/POST/Cookie 变量导入到全局作用域中。

    当register_globals被禁止,又想用到一些全局变量,那么此函数就很有用。

    版本要求:该函数在最新版本的 PHP 中已经不支持。PHP 4 >= 4.1.0, PHP 5 < 5.4.0

变量覆盖案例

$$导致变量覆盖常与foreach中出现,通过遍历列表将获取到的数组键名作为变量,列表键值分离。

<?php
$a = 1;
foreach(array('_COOKIE','_POST','_GET') as $_request) {
foreach($$_request as $_key=>$_value) 
{$$_key=addslashes($_value);}}
echo $a;
?>

当传参a=2;那么$$_key=addslashes($_value);就变为了$a = 2 。

靶场练习

知识需求

  • Session: 客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。
  • Session生成后,只要用户继续访问,服务器就会更新Session的最后访问时间,并维护该Session。用户每访问服务器一次,无论是否读写Session,服务器都认为该用户的Session“活跃(active)”了一次。
  • Session与Cookie的区别在于Session是记录在服务端的,而Cookie是记录在客户端的。

1.靶场为DuomiCMS,所以我们通过找到源代码来发现变量覆盖漏洞

image-20220117193003049

2.在duomiphp/common.php找到可能存在变量覆盖的地方

image-20220117194134541

3.admin/login.php里调用了duomiphp/common.php和check.admin.php文件

image-20220117194834807

4.check.admin.php中有可以设置session的操作

image-20220117195140528

5.session对于管理员大多数情况下是固定的,我们通过构造session传参

当groupid=1时,为管理员权限

image-20220117201116975

6.选一个能够执行session的文件传参image-20220117201924872

7.选择interface/comment.php,构造关键session参数

image-20220117202113845

8.进入后台拿到flag

image-20220117201529562


本文标题:变量覆盖
本文链接:https://blog.langsasec.cn/index.php/2022/01/17/blfg/
版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
喜欢 (2)
[]
分享 (0)
langsa
关于作者:
一个网络安全从业人员
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址