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


    变量覆盖注入

    通常将可以用自定义的参数值替换原有变量值的情况称为变量覆盖漏洞。经常导致变量覆盖漏洞场景有:$$使用不当,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

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

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

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

    以上类型属于变量覆盖

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

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

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

    解析

        // 访问 192.168.203.128/test/sqlin.php?y=id&x=1
        $id=$_GET['y']; // --> $id='id'
        $$id=addslashes($_REQUEST['x']); // --> $$id=$id=1
    
  • 相关阅读:
    设计模式
    刷新所有视图存储过程
    js杨辉三角控制台输出
    2018申请淘宝客AppKey
    w3c标准 dom对象 事件冒泡和事件捕获
    promise原理
    vue virtual Dom
    css学习
    seo优化
    新概念学习
  • 原文地址:https://www.cnblogs.com/r0ckysec/p/11531907.html
Copyright © 2020-2023  润新知