首页 > 其他分享 >变量覆盖

变量覆盖

时间:2023-07-09 11:33:36浏览次数:21  
标签:arr 变量 覆盖 echo parse str

变量覆盖

原理

对程序里面的全局变量进行覆盖,用自定义的参数值替换程序原有的变量,需要结合程序的其它功能来实现完整攻击。

造成漏洞函数

extract()

作用:从关联数组中将变量导入到当前的符号表(全局与执行函数的数组中的键相同的变量值将被覆盖)

例子:
<?php 
$b = 'big pig';
$a = array('b'=>"hello","c"=>"world");
extract($a);	
echo $b;		//hello($d的值被覆盖)
使用:
<?php 
$arr = $_GET['arr'];
extract($arr);
var_dump($d);
@$d($_POST['a']);
/*
步骤解释:
1.根据PHP数组的键值,输入的键为d,值为system
2.使用extract函数将$d修改成system
3.通过post出传递a的值
4.使结果执行结果为:system("echo Hello")
*/

image-20230707231922641

parse_str()

作用:把查询字符串解析到变量中,该函数设置的变量将覆盖已存在的同名变量。

注释:php.ini 文件中的 magic_quotes_gpc 设置影响该函数的输出。如果已启用,那么在 parse_str() 解析之前,变量会被 addslashes() 转换

例子:
<?php 
$d = "hello";
echo $d."<br>";
$arr = $_GET['arr'];
var_dump($arr);
echo "<br>";
parse_str($arr);
var_dump($d);
echo "<br>";
$d($_POST['a'])		//被执行为system("ehco 1")
?>

image-20230708000032163

标签:arr,变量,覆盖,echo,parse,str
From: https://www.cnblogs.com/ntrack/p/17538469.html

相关文章

  • Day04_变量
    1.什么是变量: 2.变量的基本使用: 3.内存管理:垃圾回收机制: 4.变量的三大组成部分和变量名规范: 5.变量名的命名风格: 6.1.变量值的三个重要的特征: 6.2.is与==: 7.小整数池: 8.常量:不变的量: ......
  • 拆包和交换变量值
    1'''2拆包和交换变量值3'''456#1.拆包7#1.1拆包:元组8defreturn_num():9return1,2101112num1,num2=return_num()#拆包13print(num2)14print(num1)1516#1.2拆包:字典17my_dict={'name'......
  • 函数的变量作用域、返回值、参数
    函数的变量作用域以及访问、修改全局变量1'''2函数往往涉及2类变量:31.全部变量,直接访问,修改需要使用global关键字42.局部变量,函数内部定义的变量5'''67#1.全局变量8name='Allen'91011#1.1定义函数12defprint_name():13p......
  • 已经配置了`JAVA_HOME`环境变量,但Tomcat仍然提示未配置该变量
    检查JAVA_HOME变量的正确性:确保JAVA_HOME的值指向JavaJDK的安装路径,而不是JRE的路径。例如,JAVA_HOME应该是类似于C:\ProgramFiles\Java\jdk1.8.0_XXX的路径,而不是C:\ProgramFiles\Java\jre1.8.0_XXX。检查环境变量配置位置:确保将JAVA_HOME变量添加到系统环境变量中,而不仅......
  • jmeter: ${__P(THreadCount,)} 。P函数实现命令行变量,改变并发数和执行时间
         /export/apache-jmeter-5.4.1/bin/jmeter.sh-JrunTime300-JTHreadCount10 -n-tpinter_get.jmx-lpinter_test.jtl  ......
  • js 对象的键名如何设定成变量
    在JavaScript中,你可以使用以下两种方式将对象的键名设定为变量。使用计算属性名:使用方括号[]语法来动态设置对象的键名。你可以将变量放在方括号内作为键名。示例代码如下:constkey='name';constvalue='Alice';constobj={[key]:value};console.log(ob......
  • 如何实现MAC Python加入环境变量的具体操作步骤
    如何在Mac上将Python加入环境变量作为一名经验丰富的开发者,我将帮助你学习如何在Mac上将Python加入环境变量。这将使你能够在终端中直接运行Python命令,而无需指定完整的Python安装路径。整体流程下面是添加Python到环境变量的步骤:步骤内容步骤一打开终......
  • 解决Java中变量+字符的具体操作步骤
    Java中变量+字符实现方法详解引言在Java中,我们可以将变量与字符结合使用,以实现一些特定的功能。本文将详细介绍如何在Java中实现变量与字符的操作,并提供相应的示例代码。流程为了更好地理解如何实现变量与字符的操作,我们可以将整个过程分解为以下几个步骤:步骤描述1......
  • 中断、主函数并发操作全局变量
    原子操作:指一系列操作不能被打断(并不是指一条指令)参考文章:文章1文章2文章3......
  • linux环境变量配置文件
    在linux系统中有很多地方可以配置环境变量,有时候我们需要增加一个或者查找具体是谁修改了环境变量,往往找不到地方。这里列举一下有哪些文件会影响环境变量。配置文件正常情况,linux系统启动的时候会按照如下加载环境变量/etc/environment/etc/profile/etc/bash.bashrc/etc/z......