[BJDCTF2020]Mark loves cat(源码泄露+命令执行)

news/2024/11/15 15:41:06/文章来源:https://www.cnblogs.com/dghh/p/18307060

扫描之后发现是/.git源码泄露

python GitHack.py http://56ad87c1-d8fb-463d-9480-f0fbee5176a0.node5.buuoj.cn:81/.git/ 

image
之后出现源码查看index.php
image

<?php// 包含外部文件 'flag.php',可能包含变量 $flag
include 'flag.php';// 初始化三个变量
$yds = "dog";     // $yds 被设置为 "dog"
$is = "cat";      // $is 被设置为 "cat"
$handsome = 'yds'; // $handsome 被设置为字符串 'yds'// 遍历 $_POST 数组,将每个键值对赋值给动态生成的变量
foreach($_POST as $x => $y){$$x = $y; // 例如,如果 $_POST 包含 'foo' => 'bar',则生成 $foo = 'bar'
}// 遍历 $_GET 数组,将每个键值对赋值给动态生成的变量
foreach($_GET as $x => $y){$$x = $$y; // 例如,如果 $_GET 包含 'foo' => 'bar',则生成 $foo = $bar 的值
}// 再次遍历 $_GET 数组,检查特定条件
foreach($_GET as $x => $y){// 如果 $_GET['flag'] 的值等于当前键名且键名不为 'flag'if($_GET['flag'] === $x && $x !== 'flag'){// 输出 $handsome 的值并终止脚本执行exit($handsome);}
}// 检查是否存在 $_GET['flag'] 或 $_POST['flag']
if(!isset($_GET['flag']) && !isset($_POST['flag'])){// 如果这两个参数都没有被设置,输出 $yds 的值并终止脚本执行exit($yds);
}// 检查 $_POST['flag'] 或 $_GET['flag'] 是否等于字符串 'flag'
if($_POST['flag'] === 'flag' || $_GET['flag'] === 'flag'){// 如果其中一个等于 'flag',输出 $is 的值并终止脚本执行exit($is);
}// 最后输出变量 $flag 的值
echo "the flag is: ".$flag;
?>

我们可以利用下面三个exit中的其中一个来输出flag


方法一覆盖$handsome

GET:?handsome=flag&flag=x&x=flag

handsome=flag是把$handsome=flag的值
handsome=flag经过
foreach($_GET as $x => $y){$$x = $$y;}
//变为$handsome=$flag

然后我们要满足

$_GET['flag'] === $x && $x !== 'flag'
//即让x和flag等于flag的值而不等于flag

所以就是flag=x&x=flag


方法二覆盖$yds

GET:?yds=flag
不做过多解释


方法三覆盖$is

GET:?is=flag&flag=flag
不做过多解释

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/745175.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

易优CMS根据aid获取文档页面链接

使用sql等标签获取到文档信息,但是没有获取到文档页面的链接,可以使用以下方法生成。 1、在根目录下\extend\function.php中创建方法: if (!function_exists(diy_get_arcurl)) {/*** 获取前台文档的URL* @param integer $aid 文档ID* @param integer $typeid 栏目ID* …

uni-app实现web-view和App之间的互相通信

1.web-view向App传递消息 官网对于uni-app使用web-view的介绍如下:web-view 注意事项提到postMessage方法,这就是web-view向App传递消息的方法,使用如下: 注意H5本身不支持uni-app里面的方法,所以在项目中引入支持调用uni-app方法的库 web-view页面使用:uni.postMessage(…

绘制双Y轴图

双Y轴图可以比较不同度量、展示数据相关性、统一时间序列、强调差异性、增强可读性等方面有重要作用,本案例展示了一种简单的双Y轴绘制方法,可以根据具体项目的要求,增加参数设置。1.导入数据库 import pandas as pd import matplotlib.pyplot as plt import numpy as np pl…

服务注册/发现-Eureka-微服务核心组件【分布式微服务笔记02】

服务注册/发现-Eureka-微服务核心组件【分布式微服务笔记02】 服务注册/发现-Eureka 目前主流的服务注册&发现的组件是Nacos, 但是Eureka 作为一个老牌经典的服务注册&发现技术还是有必要学习一下, 原因:一些早期的分布式微服务项目使用的是Eureka,在工作中, 完全有可…

Toshiba东芝硬盘开盘数据恢复

一、开盘数据恢复的前提 当硬盘出现物理性损坏,如磁头损坏、盘片划伤等,导致数据无法通过常规手段读取时,开盘数据恢复成为唯一可行的选择。 需要明确的是,开盘数据恢复应在数据无法通过恢复或其他非开盘手段解决的情况下进行。 二、开盘数据恢复的步骤 准备阶段 在无尘环境…

磁头损坏的修复方法有哪些

一、更换磁头 购配件盘:首先,需购一块与故障硬盘同型号、同批次或同时期的配件盘。这是因为磁头的规格和兼容性对于修复成功至关重要。 无尘室操作:在无尘室环境下进行操作,以防止灰尘等杂质对硬盘内部造成进一步污染。 更换磁头:将故障硬盘的磁头取下,并替换为配件盘上的…

关于三星SSD移动硬盘的维修与数据恢复

通常涉及多个方面,包括故障诊断、硬件维修以及数据恢复等。 一、故障诊断 检查连接: 确保SSD移动硬盘与计算机的连接是稳定的,检查数据线是否损坏或接触不良。 尝试更换不同的USB端口或电脑进行测试,以排除USB接口问题。 电源检查: 确认移动硬盘的电源供应是否正常,特别是…

硬盘如何维修数据恢复

一、硬盘维修方法 检查硬件连接: 确保硬盘与计算机的连接线(如SATA线、电源线)插紧且没有损坏。 尝试更换连接线或使用主板上的其他接口,以排除连接线或接口故障的可能性。 使用系统自带工具: 在Windows系统中,可以使用“磁盘检查”工具(chkdsk)来检测和修复硬盘上的文…

产品探秘:智影AI——你的创意视频制作神器!

从文字到图片再到视频的智能创作工具。只需3步,把小说变成视频。免费试用,首次注册赠送600积分。只需3步,把小说变成视频。免费试用,首次注册赠送600积分。 https://icomicai.com/在这个快节奏的时代,创意与效率并重成为了我们追求的新风尚。今天,就让我带你一起揭秘一款颠…

如何在Mac上隐藏APP? 在Mac上隐藏不用的APP小技巧

在Mac电脑中我们每天要使用很多APP,虽然Mac切换APP窗口的快捷键非常方便,但同时使用几个APP窗口是不是特别容易搞混?看起来乱糟糟的。下面我们分享在Mac上隐藏不用的APP小技巧,让用户摆脱混乱的APP窗口。 1、在Mac电脑中,打开你想要保留的APP;2、点击屏幕顶部菜单栏中APP…

帝国cms、以下状况或错误提示,是没有按照安装说明中讲的“初始化内置数据”这个步骤操作的原因:

1、增加信息提示“建立目录不成功!请检查目录权限”; 2、除了首页外,其他页面都打不开; 3、页面的CSS地址错误。本文来自博客园,作者:黄文Rex,转载请注明原文链接:https://www.cnblogs.com/hwrex/p/18306966