知识点:

  • 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. Python Socket Programming
  2. android studio插件相关(逐步完成系列)
  3. 使用gulp和vsc构建高效的typescript开发环境
  4. 反思代码能力提升点:写链接不要写带域名的 一换环境就要改
  5. 计算机考到贴吧的试题,2014年全国计算机二级VB上机考试试题七
  6. [tp5] thinkPHP5-渲染模板的方式
  7. jpa-spring -basic
  8. 信息学奥赛一本通 1962:【13NOIP普及组】表达式求值 | 洛谷 P1981 [NOIP2013 普及组] 表达式求值
  9. Java 14 中令人期待的五大新特性!
  10. 使用SVN+apache搭建一个版本控制服务器
  11. 为什么我不再和别人比较了?
  12. matlab 传函将s换为jw,已知单位负反馈系统开环传递函数为20 s(0.5s 1),
  13. 自然语言处理NLP星空智能对话机器人系列:深入理解Transformer自然语言处理 Semantic Role Labeling (SRL).
  14. 如何删除 Windows 10 上的 Windows.old 文件夹?
  15. 自旋锁使用场景和实现分析(转载)
  16. unity3d Hair real time rendering 真实头发实时渲染
  17. 华为p60pro和mate50pro哪个好 华为p60pro和mate50pro参数对比
  18. SDWebImage如何避免复用
  19. kubernetes 与 rook 架构说明
  20. qs.stringify

热门文章

  1. 【C语言】Wave文件处理
  2. rpm package.http://rpmfind.net/
  3. glid加载图片到background
  4. Hadoop集群SSH无密登录
  5. uni-app 推送测试报错 cid不存在或应用错误,CID不存在或不属于此应用
  6. 2022新农村别墅自建房CAD设计施工图纸+总共几千套
  7. 安卓报错Error:Failed to find target with hash string ‘android-26‘以及模拟器找不到错误
  8. linux 软件超频,TuxClocker - Linux下又一个GPU超频GUI
  9. 跟随模式——红外模块
  10. JavaEE - Servlet(向服务器上传文件 Part类)