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

【攻防世界】mfw(.git文件泄露)

首先进入题目环境,检查页面、页面源代码、以及URL:

发现页面无异常。

使用 dirsearch 扫描网站,检查是否存在可访问的文件或者文件泄露:

发现 可访问界面/templates/ 以及 .git文件泄露,故使用 GItHack 来查看泄露的 .git 文件:

首先查看flag.php文件,检查是否存在flag的信息:

发现没有关于 flag 的信息,于是改变思路,查看 index.php 中的源代码,检查有用信息:

在这里只截取源代码中的PHP代码演示,html不做演示<?phpif (isset($_GET['page'])) {$page = $_GET['page'];
} else {$page = "home";
}$file = "templates/" . $page . ".php";// I heard '..' is dangerous!
assert("strpos('$file', '..') === false") or die("Detected hacking attempt!");// TODO: Make this look nice
assert("file_exists('$file')") or die("That file doesn't exist!");?><div class="container" style="margin-top: 50px"><?phprequire_once $file;?></div>

观察到代码中存在 assert() 函数,猜测从 assert() 函数入手:

strops('$file', '..') === false:

判断变量 $file 中是否存在 '..'字样,主要目的为了防止用户进行 ../../etc/passwd 等指令来进行非法操作。

assert()函数:

在PHP中,assert()函数用于在代码执行过程中对一个表达式进行断言,以确保其为真。如果表达式返回false,则会抛出一个 AssertionError,并且脚本的执行将会中止。

语法 assert(参数一,参数二):

参数一:需要进行断言的表达式

参数二:(可选参数),用于在断言返回结果为 False 时输出错误信息。

构造payload:  ?page=123')%20or%20system("cat%20templates/flag.php");//

可以达到类似于SQL注入的闭合效果:

通过利用 // 将后方代码注释,最终有效的PHP语句只剩下 system("cat%20templates/flag.php");

提交payload,页面回显如下:

没有回显flag值,查看页面源代码:

发现flag,成功拿到flag值。

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

相关文章:

  • 递归神经网络(Recursive Neural Networks)
  • 【leetcode面试经典150题】29.三数之和(C++)
  • ThinkPHP审计(1) 不安全的SQL注入PHP反序列化链子phar利用简单的CMS审计实例
  • Centos中一些有趣的命令
  • elementUI2
  • Python 爬虫基础——http请求和http响应
  • 【Hadoop】Hive导入导出数据指南
  • Mybatis 执行批量插入
  • vivado 使用基本触发器模式
  • Chrome 浏览器无法保存或自动填充密码
  • C语言面试指针辨析
  • YOLOV5 分类:利用yolov5进行图像分类
  • Golang | Leetcode Golang题解之第16题最接近的三数之和
  • React添加到现有项目
  • java 邮件发送表格
  • 鸿蒙ArkTS小短剧开源项目进行中
  • Go 项目依赖注入wire工具最佳实践介绍与使用
  • 地推网推拉新致富是真的吗?靠谱平台揭秘
  • VTK使用交互器来从三维体数据中提取二维切片
  • NCBI 数据下载
  • 【Rust】基础语法
  • JVM基础:类的生命周期详解
  • 【Canvas技法】在Canvas按圆周绘制图形或是标注文字时,角度累加的方向为顺时针,起点为x轴正向
  • 计算机网络-TCP断开连接阶段错误应对机制
  • springboot动态使用DruidDataSource切换数据源(动态配置多个数据源)
  • P8786 [蓝桥杯 2022 省 B] 李白打酒加强版
  • 没有网没有移动存储的情况下两台电脑如何互相传输数据
  • 如何用putty通过ssh连接ubuntu
  • java如何实现rabbitmq的消息确认机制和消息持久化机制配置和示例
  • react 组件:Suspense