1.题目

BP监听数据包里有一个flag,base64试了一下,假的。

试试扫描后台目录,用御剑后台扫描珍藏版OK

题干提示用linux,kali linux平台有gobuster(但是扯淡的是2021版本里竟然没有安装)

扫描发现了.git目录,说明存在git本地版本库漏洞,flag就在这里。

2.知识点

git项目本地版本库漏洞利用

** 简要介绍git的目录结构 **
在一个目录中初始化一个仓库以后 , 会在这个目录下产生一个名叫 .git 的隐藏文件夹
这个文件夹里面保存了这个仓库的所有版本等一系列信息

** 简要介绍利用git的开发模式 **

一般情况下 , 开发人员为了让版本控制和网站部署比较方便 , 在开发的时候就会走这样的流程

  1. 初始化仓库 , 并将仓库托管在Coding或者Github上 , 便于远程协作/备份/部署
  2. 在本地进行网站开发 , 并定时提交commit , 并push到远程托管网站
  3. 当一个阶段的开发差不多的时候 , 需要远程登陆服务器 , 通过托管网站再将发行版网站pull到Web目录下
  4. 网站正常运行

这里当网站维护(开发)人员在从托管网站pull代码的时候 , 也会将这个储存了所有的版本信息的.git文件夹下载到服务器的Web目录下 , 这样的话 , 攻击者就可以利用这个目录 , 去下载git文件夹 , 就可以利用其中储存的版本控制信息 , 完全恢复网站后台的代码和目录结构 。

** 具体利用思路 : **

  1. 利用爬虫递归下载.git目录的所有文件
  2. 利用git命令对网站的commit历史进行查看
  3. 利用git命令对网站的源码进行恢复

** 具体操作 : **

  1. 在ubuntu下利用wget对该目录进行递归下载
wget -r -p -np -k http://www.xxx.com/.git/
--recursive(递归)
-k,  --convert-links(转换链接)
-p,  --page-requisites(页面必需元素)
-np, --no-parent(不追溯至父级)
  1. 下载完成后 , 进入下载的网站目录
  2. 利用命令 : git reflog 查看网站的提交记录
  3. 利用命令 : git reset --hard [log hash] 恢复到指定版本号 (一般如果只需要得到源码的话就恢复到最近的一次提交)

3.解析

#安装gobuster
sudo apt install gobuster
​

使用gobuster对网站后台进行扫描

匹配kali自带的目录字典 /usr/share/wordlists/dirb/common.txt

gobuster dir -u http://114.67.246.176:10491/ -w /usr/share/wordlists/dirb/common.txt

把git本地版本库下载到本地,递归下载网站/.git目录下的所有文件和文件夹

wget -r http://114.67.246.176:10491/.git

在网站目录/.git下,查看版本日志

日志里有好几个描述flag is here?挨个查看日志

使用git show commit_id 命令查看commit,标黄色的是commit_id

很快就找到了

git show 40c6d51

CTF之路:git项目本地版本库(.git文件夹)漏洞利用相关推荐

  1. 【Git】Git 版本管理 ( 补充提交版本 git commit --amend | 版本库提取文件 git checkout -- filename | 删除文件 git rm )

    文章目录 一.补充提交版本 git commit --amend 二.版本库提取文件 git checkout -- filename 三.删除文件 git rm 一.补充提交版本 git commi ...

  2. 【Git】Git 基础命令 ( Git 版本库概念 | 创建版本库 git init | 克隆版本库 git clone )

    文章目录 一.Git 版本库概念 二.创建版本库 git init 三.克隆版本库 git clone 一.Git 版本库概念 Git 版本库概念 : Git 版本库 Repository 又称为 G ...

  3. Git for Windows之推送本地版本库到远程仓库

    Git for Windows之基础环境搭建与基础操作中介绍了Git基本环境的构建与基本的操作.生成了一个本地git版本库,本文将介绍如何将这个版本库推送到远程仓库(码云,github也可以). 1. ...

  4. git版本控制工具(二)----本地版本库的常用操作

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  5. Git学习(1)-本地版本库的创建

    我用的是Git-2.14.3-64-bit版本,在windows64位上运行的,把软件分享下链接:http://pan.baidu.com/s/1jIoZ7Xc 密码:13q2. 安装及配置自行百度, ...

  6. git创建本地版本仓库及注意事项

    git怎么创建本地版本仓库 安装git我就不用说了吧!下载地址:https://github.com/msysgit/msysgit/releases/download/Git-1.9.4-previ ...

  7. Git学习笔记 -- 安装git、创建版本库、时光穿梭、远程仓库

    一.Git的安装 在window系统上安装:从https://git-for-windows.github.io下载,然后按默认选项安装即可: 安装完成后,在"桌面"上右击,在弹出 ...

  8. 【Git】Git 基础命令 ( 添加暂存文件 git add | 提交文件至版本库 git commit | 查看版本库状态 git status | 查询文件修改 git diff )

    文章目录 一.添加暂存文件 git add 二.提交文件至版本库 git commit 三.查看版本库状态 git status 四.查询文件修改 git diff 一.添加暂存文件 git add ...

  9. git项目中的子git项目_使用子模块和子树管理Git项目

    git项目中的子git项目 如果您从事开源开发,则可能与Git一起管理源代码. 您可能遇到过具有大量依赖项和/或子项目的项目. 您如何管理它们? 对于开源组织,为社区和产品实现单源文档和依赖性管理可能 ...

最新文章

  1. Centos系统上安装php遇到的错误解决方法集锦
  2. ApacheBench(ab)使用详解
  3. (详细全面)softmax和log_softmax的联系和区别,NLLLOSS和CrossEntropyLoss的联系和区别
  4. 算法-- 删除排序链表中的重复元素(Java)
  5. ETSI GS MEC 014,UE 标识 API
  6. 动态规划 dp01 西瓜分堆问题 c代码
  7. JavaScript对象的chapterI
  8. centos文件服务器软件,seafile服务器端的centos8的快速部署
  9. /dev/mtdN和/dev/mtdblockN的区别
  10. sharpssh远程linux监控系统,利用SharpSsh远程执行linux的shell命令
  11. Oracle中group by用法
  12. 计算机房面积设置气消条件,广东省《建筑防烟排烟系统技术标准》问题释疑
  13. verilog学习笔记:简单的数据选择器modelsim仿真
  14. 直角坐标积分化为极坐标积分_将直角坐标系下的二次积分转换成极坐标系下的二次积分...
  15. uni-app安卓禁止截屏,一行代码
  16. C++单个配置与多个配置
  17. Windows下载安装Redis
  18. OpenCV每日函数 几何图像变换模块 (7) linearPolar函数/logPolar函数/warpPolar函数
  19. 高斯噪声成因_相位噪声的产生原因和影响
  20. 干货:如何让自已设计思维源源不断?

热门文章

  1. linux 脚本 wait,shell脚本使用 timeout + wait 完成: 超时退出执行,等待执行完毕并处理执行结果 - yanbin's Blog...
  2. vue2和vue3 面试题
  3. C语言指针关键知识点总结
  4. 团队中技术同质化的反思
  5. c语言程序实践感受心得,C语言实践心得体会
  6. round在python是什么意思_细说python中的round()方法
  7. 【Java】微信企业付款报错:java.io.IOException: toDerInputStream rejects tag type 45
  8. 详解活动图计算关键路径、最早开始时间、最晚开始时间、冗余时间,C++ 程序实现
  9. “别人家孩子”的大学四年
  10. 半导体中载流子的统计分布