渗透之路基础 -- 变量覆盖漏洞

变量覆盖注入

通常将可以用自定义的参数值替换原有变量值的情况称为变量覆盖漏洞。经常导致变量覆盖漏洞场景有:$$使用不当,extract()函数使用不当,parse_str()函数使用不当,import_request_variables()使用不当,开启了全局变量注册等。

案例演示

直接上案例可能会更好明白,多看几遍多复现就会明白

假设服务器端正常的查询功能

<?php
    // $id=$_REQUEST['x']; // 接受get传递参数x的值
    $id=addslashes($_REQUEST['x']);
    // $id=$_GET['x']; // 接受get传递参数x的值
    // 连接数据库
    $conn=mysqli_connect('127.0.0.1','root','root');
    
    // 选择数据库并连接
    mysqli_select_db($conn,'dvwa');
    $sql="select * from users where user_id=$id";
    $result = mysqli_query($conn,$sql);
    while($row=mysqli_fetch_array($result)){
        echo "id:".$row['user_id']."<br>";
        echo "user:".$row['user']."<br>";
        echo "pass:".$row['password']."<br>";
    }
    mysqli_close($conn); // 关闭连接
    echo "当前执行的sql语句:".$sql; //输出sql命令
?>
  • 访问 192.168.203.128/test/sqlin.php?x=1

1404622-20190917100412399-332265554.png

  • 当服务器代码为以下情况(存在变量覆盖

1404622-20190917100419216-2133787280.png

  • 访问 192.168.203.128/test/sqlin.php?x=1

1404622-20190917100424365-1193971701.png

  • 访问 192.168.203.128/test/sqlin.php?y=id

1404622-20190917100429304-458901080.png

以上类型属于变量覆盖

当源代码存在这样的代码,可能会存在变量覆盖注入的问题

1404622-20190917100435175-1502328297.png

  • 访问 192.168.203.128/test/sqlin.php?y=id

1404622-20190917100442248-607902779.png

  • 访问 192.168.203.128/test/sqlin.php?y=id&x=1

1404622-20190917100449553-1484749237.png

解析

    // 访问 192.168.203.128/test/sqlin.php?y=id&x=1
    $id=$_GET['y']; // --> $id='id'
    $$id=addslashes($_REQUEST['x']); // --> $$id=$id=1

转载于:https://www.cnblogs.com/r0ckysec/p/11531907.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值