前言
文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢!本文仅用于学习与交流,不得用于非法用途!
知识点:
主要考点是$$会导致变量覆盖
题目:
dirsearch扫描一下,发现/.git,用githack获取源码

<?php
include 'flag.php';
$yds = "dog";
$is = "cat";
$handsome = 'yds';foreach($_POST as $x => $y){$$x = $y;
}foreach($_GET as $x => $y){$$x = $$y;
}foreach($_GET as $x => $y){if($_GET['flag'] === $x && $x !== 'flag'){ //GET方式传flag只能传一个flag=flagexit($handsome);}
}if(!isset($_GET['flag']) && !isset($_POST['flag'])){   //GET和POST其中之一必须传flagexit($yds);
}if($_POST['flag'] === 'flag'  || $_GET['flag'] === 'flag'){  //GET和POST传flag,必须不能是flag=flagexit($is);
}echo "the flag is: ".$flag;
?>

审计代码后,发现想要正常按照题目的流程拿到flag基本不可能,题目的提示也是骗人的。

先整理一下思路,既然不能正常流程获取flag,看到$$能够覆盖变量,就应该从那些作为exit()函数供用的参数下手,化为己用,让它能够输出flag,应该就是这题的标准解法。

先看这串代码

foreach($_POST as $x => $y){$$x = $y;
}foreach($_GET as $x => $y){$$x = $$y;
}foreach($_GET as $x => $y){if($_GET['flag'] === $x && $x !== 'flag'){ //GET方式传flag只能传一个flag=flagexit($handsome);}
}

如果指望让$handsome能够输出flag,应该是不可能的了。因为需要满足的条件为:
在GET找到名为flag的键,与在GET所有的键强比较,需相等

让GET中所有的键与字符串flag强比较,需不相等

再看看这段代码

if(!isset($_GET['flag']) && !isset($_POST['flag'])){ //GET和POST其中之一必须传flagexit($yds);
}

输出$yds需要满足的条件:
GET中需要没设置有名为flag的键

POST中需要没设置有名为flag的键

相比第一个变量$handsome来说,变量$yds更容易操纵!那就先尝试着getflag。
GET传入yds=flag,到$$x = $$y时,即为$yds=$flag,此时,$yds的值等于flag{xxxxxx},且满足GET与POST没有flag键,输出flag。

这道题虽然看起来非常绕,但把思路捋清了后,会显的十分简单。

[BJDCTF2020]Mark loves cat详细解法与思路相关推荐

  1. [BJDCTF2020]Mark loves cat 1——(超详细 三种方法)

    [BJDCTF2020]Mark loves cat 1 一进入环境,毫无头绪 拿御剑 或者 dirsearch 扫出了 .git/ 可以猜出,本关一定与git源码泄露有关 我们使用GitHack 看 ...

  2. [BJDCTF2020]Mark loves cat(3种解法)

    练习靶场:BUUCTF   题目搜索:[BJDCTF2020]Mark loves cat 靶机启动后的界面 步骤1:我们使用工具dirsearch扫描目录,观察是否有信息泄露 python dirs ...

  3. [BJDCTF2020]Mark loves cat

    首先打开网站看到的是一个个人博客,这种常规的 类似实战题目 先扫描目录看看 路径扫描 没错这真的是我的字典,就7个路径,哈哈哈,还在收集啊 git泄露 看到了一个 .git 泄露 用了俩工具测试,无任 ...

  4. [BJDCTF2020]Mark loves cat 1

    [BJDCTF2020]Mark loves cat 1 首先打开题目得到: 在网站没有什么发现 就扫描一下网站得到: 发现有git泄露得到: python2 GitHack.py http://d9 ...

  5. BUUCTF [BJDCTF2020]Mark loves cat

    打开题目 搜索一番没有任何发现: dirsearch扫描后发现.git泄露,GitHack.py下载源码: python GitHack.py http://b77333f7-af9a-4f4a-aa ...

  6. [BJDCTF2020]Mark loves cat(.git源码泄露与代码审计之变量覆盖漏洞)

    知识点: php中$$用来定义可变变量 解题: python GitHack.py http://e6e2adea-991f-4ae7-b4ea-0f82d49d8f8c.node3.buuoj.cn ...

  7. buuctf Mark loves cat

    buuctf Mark loves cat 打开是个静态页面,源码也无任何有用信息 dirsearch扫描后发现.git泄露 GitHack.py下载得到两个php文件,接下来就是代码审计: flag ...

  8. buuctf web mark loves cat

    打开场景,是一个主页,先审计源码,发现很多a链接,但都是指向本页面的死链,没啥用 扫目录,python3 dirmap.py -i http://bba5d728-52ed-427c-bf70-629 ...

  9. web buuctf [BJDCTF2020]Mark loves cat1

    考点: 1.git泄露 2.变量覆盖 1.打开靶机,先看robots.txt,并用dirsearch进行扫描 py dirsearch.py -u f190ddaf-3db0-48c2-a858-4a ...

最新文章

  1. scrum敏捷开发的几款工具
  2. http和ftp下载的区别
  3. mdb导入SqlServer
  4. 科比狂轰全场最高27分 联手鲨鱼同捧MVP奖杯
  5. Java判断字符串是否是整数
  6. new file https 找不到路径_Python3用pathlib模块替代os.path进行文件路径的操作
  7. java程序启动命令_如何用java启动windows命令行程序
  8. java importgeopoint_如何在地图上显示更多点(GeoPoint)?
  9. python3.6串口编程实例_使用python3实现操作串口详解
  10. 所需依赖_注意细节,阿里架构师一文详解SpringDI的四种依赖注入方式
  11. JavaScript基础知识【内置对象】(六)
  12. 三角形面积 java_java编程中求三角形面积肿么写?
  13. Spring MVC(十六)--Spring MVC国际化实例
  14. Linux段管理,BSS段,data段,.rodata段,text段
  15. 设计模式--创建型模式之抽象工厂模式
  16. selenium超详解
  17. 网络“投毒”系列报告:全国多省软件升级劫持攻击事件数据分析
  18. SQL数据库连接失败
  19. 一行脚本实现远程开机
  20. MODULE_DEVICE_TABLE宏的作用

热门文章

  1. Linux下刻录cd,用debian命令刻录CD
  2. winrar 百度网盘_不冲百度网盘会员,如何在手机上打开网盘里的压缩包?
  3. redis集群在mac本地重启
  4. justjavac:从辍学到成为Deno核心代码贡献者,我的十年编程生涯
  5. 宝存科技推出全球首款大量商用级别的高性能Open-Channel SSD
  6. html字体外围有黄色边框,input或textarea在chrome、safari浏览器点击获得焦点时出现黄色边框去掉的方法...
  7. Python学习:python数组模块用法
  8. SpringBoot整合微信扫码登录
  9. java达内小发猫课程,详细说明
  10. android版本兼容API24,Android 7.0 (API 24) 适配