首页 > 编程语言 >php的可变变量覆盖漏洞

php的可变变量覆盖漏洞

时间:2022-09-03 00:34:36浏览次数:64  
标签:变量 value 漏洞 flag 参数 key 可变 post php

题目如下:

<?php

highlight_file('source.txt');
echo "<br><br>";

$flag = 'xxxxxxxx';
$giveme = 'can can need flag!';
$getout = 'No! flag.Try again. Come on!';
if(!isset($_GET['flag']) && !isset($_POST['flag'])){
    exit($giveme);
}

if($_POST['flag'] === 'flag' || $_GET['flag'] === 'flag'){
    exit($getout);
}

foreach ($_POST as $key => $value) {
    $$key = $value;
}

foreach ($_GET as $key => $value) {
    $$key = $$value;
}

echo 'the flag is : ' . $flag;

?>

代码分析:

第一个if判断get请求和post请求的参数是否为flag,第二个if判断get请求参数和post请求参数为flag的值是否为flag。综上,代码限制的条件是,要有get和post的请求参数为flag,注意这里这是要求有这个参数而已,没有说参数唯一。其次要求我们参数为flag时其值都不能出现flag。接着分析,第一个foreach是关于post请求的,把参数名赋值给变量key,把参数值赋值给变量value,于是假设参数名为flag,参数值为a,则第一个foreach得到的是:$flag = a。即把变量flag重新赋值为a。同理得到第二个foreach得到的结果:$flag = $a。即变量flag的值为变量a的值。

漏洞利用:

因为最后要输出flag的值,而经过前面的代码又会把flag的值覆盖掉,于是这里解决的问题是:如何让变量flag不被覆盖,原样输出。

前面说了参数可以不为一,所以我们思路是:通过另外一个参数作为变量(假设为a)先获取原来flag的值,然后去获取变量a的值,则能够到达我们获取原来的值的目的。

payload:

GET:a=flag&flag=a

POST:anything(这里post传参不重要)

 

标签:变量,value,漏洞,flag,参数,key,可变,post,php
From: https://www.cnblogs.com/nLesxw/p/moectf_ezphp.html

相关文章

  • WordPress的网站链接,如何去掉index.php和category?
    使用WordPress搭建网站时,如果你是基于IIS服务器搭建的,肯定会遇到这个问题,就是固定链接设置好后,网址会出现烦人的index.php和category这两个关键字。  举个例子,博客的分......
  • 可变剪切位点强度计算[自用]
    软件安装#安装bedtools$condainstall-cbiocondabedtools#安装astk$pipinstallgit+https://github.com/huang-sh/astk.git@dev剪切位点强度计算支持suppa......
  • php exec 函数执行shell命令,中文参数异常的问题
    exec("/usr/local/bin/wkhtmltopdf--page-sizeA4--footer-font-nameFangSong--footer-line--header-font-size13--footer-font-size9--footer-center[page]--......
  • thinkphp 3.2.3 包含任意 文件 的漏洞,这个太多了,我就不详细了解了
    攻击的代码http://localhost/index.php?a=fetch&templateFile=public/index&prefix=%27%27&content=%3Cphp%3Efile_put_contents(%2782.php%27,%27%3C?php%20@eval($_PO......
  • 可别小看了XSS漏洞
    可别小看了XSS漏洞​ 对于初了解xss漏洞的人来说,XSS漏洞的危害就是获取受害者的cookie,来进行‘cookie劫持’。​ 今天就总结一下XSS漏洞的危害性,望安全人员不要轻视,开发......
  • php webman对接Luckysheet share多人协作模式项目
    2022年9月2日10:05:03gitee地址https://gitee.com/zxadmin/luckysheet-phpserver此项目目前定义为对接失败,当然Luckysheet也可以去除掉加密的部分,直接json通信就没问题......
  • php上传文件夹的解决方案
    ​需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在20G内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以20G来进行限制。PC端全平台支......
  • php操作FPDF
    1.引入PDF文件 1.1 引入中文字体  PDFMerger/fpdf/chinese.php; 12 引入英文字体  PDFMerger/fpdf/chinese.php; 文件地址如图:  2.获取信息$......
  • 特质,我如何使用它们来改进我的代码 (PHP)
    特质,我如何使用它们来改进我的代码(PHP)用这5个技巧变得很棒Photoby朱迪库克on不飞溅嗨,我是尼科,我是伦敦(英国)一家票务经纪公司的高级工程师。您正在从办公......
  • 【Java基础】方法的重载、可变形参
    1.方法重载同一个类中,方法名相同,参数个数或参数类型不同。根据方法的参数列表的不同来区分。publicintadd(intx,inty){returnx+y;}pu......