zoukankan      html  css  js  c++  java
  • 渗透之路基础 -- 变量覆盖漏洞

    变量覆盖注入

    通常将可以用自定义的参数值替换原有变量值的情况称为变量覆盖漏洞。经常导致变量覆盖漏洞场景有:$$使用不当,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
    
  • 相关阅读:
    记录nginx 搭建集群环境踏过的坑
    工作中常见问题
    自定义WebViewPage,实现Url.Action生成绝对地址
    上传阿里云样式文件不解析问题一例总结
    EF4.4 升级EF6.0问题总结
    记一次数据库迁移遇到问题
    javascript 中 !~ 什么意思
    jquery.mobile 中 collapsible-set collapsible listview 共同布局问题
    T-sql脚本规范
    EasyUI使用技巧总结
  • 原文地址:https://www.cnblogs.com/r0ckysec/p/11531907.html
Copyright © 2011-2022 走看看