当前位置: 首页 > news >正文

CTF-Web习题:[BJDCTF2020]Mark Loves cat

题目链接:Mark Loves cat

解题思路

访问靶机网站后得到如下页面:
在这里插入图片描述
先浏览网页,发现最下面有一个"dog"字样,此时翻看源码并没有什么发现
在这里插入图片描述
那就例行进行目录扫描,源码泄露扫描,用dirsearch目录扫描工具扫描网页目录:python3 dirserach.py -u [url]

发现/.git 源码,考虑是,git源码泄露问题
在这里插入图片描述

在kali中利用githacker工具拉取.git源码到result文件夹中:githacker --url [url] --output-folder [文件夹名]
在这里插入图片描述

得到flag.php和index.php文件

打开index.php,发现导入了flag.php文件
在这里插入图片描述

打开flag.php,发现flag变量被函数赋值,证明这里的flag变量就是我们要找的flag,那就会想有没有办法获取到这个值
在这里插入图片描述

审阅index.php文件,其中if判断有点多,我们审阅关键字段,发现有echo $flag,尝试跨过i判断利用echo直接输出flag的值无果。

发现前面还有$$,是典型的变量覆盖漏洞,阅读源码可知,只要用get方法传入yds=flag,即可利用exit()函数覆盖yds变量输出flag。

在这里插入图片描述

知识补充

php语法:

  • 可变变量(可导致变量覆盖漏洞)
$cat = "miao";
$$cat = "hahaha";
echo $miao;//输出hahaha
  • $_GET:与$_POST类似,是php中的超全局变量,用于接收HTTP中GET方法传过来的参数数组
  • foreach
foreach($_GET as $x => $y){$$x = $$y;
}
//遍历HTTP的GET方法传过来的参数数组,key赋值给x,value赋值给y,大括号内是循环体
//例如传过来a=flag,则有$a = $flag,即将变量flag的值赋值给变量a
  • exit()函数
exit($a);//打印变量a的值,中断程序并退出
  • isset()函数
//用于检测变量是否被赋值且非null
$a = 1;
isset($a);//true

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • AWS全服务历史年表:发布日期、GA和服务概述一览(一)
  • 鸿蒙开发StableDiffusion绘画应用
  • Python | Leetcode Python题解之第260题只出现一次的数字III
  • list容器
  • 比较RMI、HTTP+JSON/XML、gRPC
  • 极狐GitLab如何配置使用独立数据库?
  • 算法第十一天:leetcode707.设计链表
  • Step-DPO 论文——数学大语言模型理解
  • d3d12.dll 文件缺失如何解决?五种修复丢失问题的方法
  • [CP_AUTOSAR]_分层软件架构_接口之通信模块交互介绍
  • MyBatis框架学习笔记(四):动态SQL语句、映射关系和缓存
  • 【AI资讯】7.19日凌晨OpenAI发布迷你AI模型GPT-4o mini
  • 前端Vue组件技术实践:构建自定义动态宫格菜单按钮组件
  • SpringBoot连接PostgreSQL+MybatisPlus入门案例
  • 昇思25天学习打卡营第18天|Pix2Pix实现图像转换
  • ComponentOne 2017 V2版本正式发布
  • ES6核心特性
  • Python_网络编程
  • 阿里云Kubernetes容器服务上体验Knative
  • 基于遗传算法的优化问题求解
  • 记一次和乔布斯合作最难忘的经历
  • 聚类分析——Kmeans
  • 力扣(LeetCode)965
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 前端性能优化--懒加载和预加载
  • 听说你叫Java(二)–Servlet请求
  • 鱼骨图 - 如何绘制?
  • C# - 为值类型重定义相等性
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • ​数据结构之初始二叉树(3)
  • # 数论-逆元
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • ${ }的特别功能
  • (33)STM32——485实验笔记
  • (pojstep1.3.1)1017(构造法模拟)
  • (STM32笔记)九、RCC时钟树与时钟 第一部分
  • (层次遍历)104. 二叉树的最大深度
  • (创新)基于VMD-CNN-BiLSTM的电力负荷预测—代码+数据
  • (定时器/计数器)中断系统(详解与使用)
  • (二)c52学习之旅-简单了解单片机
  • (二)斐波那契Fabonacci函数
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .NET 8 跨平台高性能边缘采集网关
  • .NET Framework、.NET Core 、 .NET 5、.NET 6和.NET 7 和.NET8 简介及区别
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
  • .Net下的签名与混淆
  • //解决validator验证插件多个name相同只验证第一的问题
  • @vue/cli 3.x+引入jQuery
  • [2669]2-2 Time类的定义
  • [AHK] WinHttpRequest.5.1报错 0x80092004 找不到对象或属性