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

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



之后出现源码查看index.php

<?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

不做过多解释

[BJDCTF2020]Mark loves cat(源码泄露+命令执行)的更多相关文章

  1. [BJDCTF2020]Mark loves cat && [BJDCTF 2nd]简单注入 && [BJDCTF2020]The mystery of ip

    [BJDCTF2020]Mark loves cat 源码泄露 使用GitHack.py下载源码 下载之后对源代码进行审计 flag.php代码为: <?php $flag = file_get ...

  2. 刷题[BJDCTF2020]Mark loves cat

    解题思路 打开网页,发现是一个博客,基本寻找博客挂载信息,源码等无果后,扫描后台.发现.git泄露 .git泄露 发现.git泄露后,使用Git Extract这款工具,可自动将源码clone到本地 ...

  3. [BJDCTF2020]Mark loves cat

    0x00 知识点 GitHack读取源码 $$会导致变量覆盖漏洞 0x01解题 dirsearch扫描一下,发现/.git目录,用githack获取一下源码. <?php include 'fl ...

  4. [原题复现+审计][BJDCTF2020]Mark loves cat($$导致的变量覆盖问题)

    简介  原题复现:https://gitee.com/xiaohua1998/BJDCTF2020_January  考察知识点:$$导致的变量覆盖问题  线上平台:https://buuoj.cn( ...

  5. ctf/web源码泄露及利用办法

    和上一篇文章差不多,也算是对web源码泄露的一个总结,但是这篇文章更侧重于CTF 参考文章: https://blog.csdn.net/wy_97/article/details/78165051? ...

  6. Android源码浅析(四)——我在Android开发中常用到的adb命令,Linux命令,源码编译命令

    Android源码浅析(四)--我在Android开发中常用到的adb命令,Linux命令,源码编译命令 我自己平时开发的时候积累的一些命令,希望对你有所帮助 adb是什么?: adb的全称为Andr ...

  7. CTF中常见Web源码泄露总结

    目录00x1 .ng源码泄露 00x2  git源码泄露 00x3 .DS_Store文件泄漏 00x4 网站备份压缩文件 00x5 SVN导致文件泄露 00x6 WEB-INF/web.xml泄露  ...

  8. 常见Web源码泄露总结

    来自:http://www.hacksec.cn/Penetration-test/474.html 摘要 背景 本文主要是记录一下常见的源码泄漏问题,这些经常在web渗透测试以及CTF中出现. .h ...

  9. Web源码泄露总结

    Web源码泄露总结 背景 本文主要是记录一下常见的源码泄漏问题,这些经常在web渗透测试以及CTF中出现. 源码泄漏分类 .hg源码泄漏 漏洞成因: hg init的时候会生成.hg e.g.http ...

  10. ctf常见源码泄露

    前言 在ctf中发现很多源码泄露的题,总结一下,对于网站的搭建要注意删除备份文件,和一些工具的使用如git,svn等等的规范使用,避免备份文件出现在公网 SVN源码泄露 原理 SVN(subversi ...

随机推荐

  1. mongodb的replication与shard分片结合使用详解

    部署脚本 #!/bin/bash #复制集配置 IP='10.0.0.12' #主机ip NA='rs3' #复制集名称 if [ "$1" = "reset" ...

  2. kubernets之带有limit的资源

    一  pod中容器的limits属性的作用 1.1  创建一个带有资源limits的pod apiVersion: v1 kind: Pod metadata: name: limited-pod s ...

  3. 新一代AI搜索引擎神器推荐及效果测试:秘塔AI、天工AI、Perplexity等

    新一代AI搜索引擎神器推荐效果测试:秘塔AI.天工AI.Perplexity等 0.前言: 搜索的核心:事物对象级别的搜索 回到搜索引擎本身,搜索引擎的早期出现是为了解决互联网上信息过载的问题.随着互 ...

  4. 高分辨率食道测压(HRM)

    高分辨率测压(High resolution Manometry) HRM的优势 高分辨率食管测压不但实现了从咽部到胃部的全程功能监测,而且插管无需牵拉,操作十分方便.更为重要的是,临床医生经过简单的 ...

  5. TIM_Cmd()函数引发的思考

    在使用定时器的输入捕获进行频率测量时发现用TIM_Cmd()函数关闭定时器后,输入捕获中断还是会被触发,这就很奇怪了,输入捕获是定时器的一种模式,关闭定时器不就意味着输入捕获捕获也被关闭了吗?可是实际 ...

  6. nodejs加jq来实现下载word文档

    先看效果 浏览器上: 下载的效果: 第一步是自己先搭建前端页面把自己写的结构数据全部传到后端 下面就是整个的结构 结构分析后端拿到数据后端解析: 第一层菜单层: { role: '分析报告', //顶 ...

  7. REACT 前端界面提交

    在react项目中安装代理中间件 setupProxy.js文件 const { createProxyMiddleware: proxy } = require('http-proxy-middle ...

  8. elementUI slider组件,带范围选择实现双向绑定

    网上查过很多相关文章都没有一章是写element ui滑块带范围实现双向绑定 二个滑块二头的数据怎么得到 我的需求是做个时间轴要滑动选择不同的时间 开始很难做最后一点一点摸索得出的结论 好在写出来了先 ...

  9. ETL工具-nifi干货系列 第十讲 处理器RouteOnAttribute(数据流路由)

    1.今天我们一起来学习下处理器RouteOnAttribute,此处理器的作用是根据属性值进行路由进而来控制数据流的走向.类似于java中的if-else或者switch-case.如下图所示. Ge ...

  10. OOP第一阶段题集总结

    一.前言 知识点:数组,字符串的使用,链表,hashmap,泛型的使用,正则表达式的使用,类的设计,类与类之间的关系,单一职责. 题量:题目数量为5+4+3,数量适中,其中都是前几题较简单,最后一题较 ...