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

WEB:mfw

背景知识

        Git泄露

        Githack使用

        命令执行漏洞

题目

 这里页面里有Git,猜测是Git泄露

先用dirsearch扫一下

确实存在.git目录,可以尝试访问一下

 使用Githack来下载并恢复.git文件

这里记得使用的时候关闭杀毒软件

结果会自动保存

 点进去先看一下flag这个文件,发现什么都没有

再看一下index.php,进行代码审计

?phpif (isset($_GET['page'])) {$page = $_GET['page'];
} else {$page = "home";
}
//使用get请求方式给page传参,如果没传,默认page=home $file = "templates/" . $page . ".php";
//$file变量会接收传入的$page并且在其前面拼接templates/,在其后面拼接.php,PHP中用.来实现字符串的拼接// I heard '..' is dangerous!
assert("strpos('$file', '..') === false") or die("Detected hacking attempt!");//strpos() 函数会在'$file'这个字符串中进行查找,是否存在'..',当字符串里有'..',则会返回一个数(即'..'第一次出现的位置),结果为true
//与右边的false并不恒等,此时就会执行or右边的die()函数,输出 Detected hacking attempt!
// TODO: Make this look nice
assert("file_exists('$file')") or die("That file doesn't exist!");?>
//file_exists() 函数还会检查我们传入的page拼接后是否存在

 ​​​

 由代码审计可知,file_exists() 函数还会检查我们传入的page拼接后是否存在,在之前的githack下载文件中,templates文件夹中有四个php文件,只要传入的不是这4个,就会执行die函数,输出 That file doesn't exist!

 file_exists()函数不会对获取flag有影响

 assert()函数会将括号中的字符当成代码来执行

可以直接在第一个assert()函数处就调用cat命令来获取flag

传入的page中不能有'..',使strpos()函数返回false,和右边的false相等

payload

?page=123') or system("cat templates/flag.php");//

payload的前半段可以是存在的文件也可是不存在的文件

只需要前半段返回的是false,执行or后面的即可

在最后添加注释//,确保后面的代码不会执行

传入payload的之后,查看网页源代码可以找到flag

 参考学习链接:

攻防世界 mfw(Git源码泄露与命令执行漏洞)_mfw攻防世界_kali-Myon的博客-CSDN博客

攻防世界 mfw(Git源码泄露与命令执行漏洞)_mfw攻防世界_kali-Myon的博客-CSDN博客

http://www.lryc.cn/news/103065.html

相关文章:

  • 2.4 传统经验光照模型详解
  • 基于高通QCC5171的对讲机音频数据传输系统设计
  • 【题解】判断链表中是否有环、链表中环的入口结点
  • Pytorch 最全入门介绍,Pytorch入门看这一篇就够了
  • Lambda 表达式的作用域
  • 【portswigger】第二专题-XSS(二)
  • 【计算机视觉|人脸建模】3D人脸重建基础知识(入门)
  • 使用Jetpack Glance创建Android Widget
  • 【MyBatis 学习三】子段不一致问题 多表查询 动态SQL
  • 15. Spring AOP 的实现原理 代理模式
  • 死锁产生的原因以及解决方案
  • 【构造】CF1758 D
  • 【腾讯云 Cloud Studio 实战训练营】永不宕机的IDE,Coding Everywhere
  • JavaScript将一层级对象数组转为children嵌套的三层级树状对象数组(多级树状分类)
  • Windows脚本启动Redis、Java和Nginx服务指南
  • 【宝藏系列】STM32之C语言基础知识
  • 探索自除数:发现区间内的神奇数字
  • 打卡力扣题目四
  • npm yarn nrm
  • 关于我对刚开始学Java的小白想分享的内容:
  • Redis学习路线(5)—— Redis生成唯一ID
  • django后台系统Tyadmin
  • 设计模式适合用于解决特定的软件设计问题呢
  • 测试|测试分类
  • 矩阵中的路径(JS)
  • Linux时间体系与LinuxPTP
  • 最优除法(力扣)数学 JAVA
  • Git代码管理
  • 使用vscode进行远程开发服务器配置
  • 北斗gps卫星授时服务器(NTP)应用于防火墙场景