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

变量覆盖注入

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

案例演示

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

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


	// $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']."
"
; echo "user:".$row['user']."
"
; echo "pass:".$row['password']."
"
; } mysqli_close($conn); // 关闭连接 echo "当前执行的sql语句:".$sql; //输出sql命令 ?>
  • 访问 192.168.203.128/test/sqlin.php?x=1

渗透之路基础 -- 变量覆盖漏洞_第1张图片

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

渗透之路基础 -- 变量覆盖漏洞_第2张图片

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

渗透之路基础 -- 变量覆盖漏洞_第3张图片

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

渗透之路基础 -- 变量覆盖漏洞_第4张图片

以上类型属于变量覆盖

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

渗透之路基础 -- 变量覆盖漏洞_第5张图片

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

渗透之路基础 -- 变量覆盖漏洞_第6张图片

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

渗透之路基础 -- 变量覆盖漏洞_第7张图片

解析

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

你可能感兴趣的:(技术篇)