Git泄露(CTFHUB的git泄露)

log

当dirsearch 扫描一下,命令:

python dirsearch.py -u  url/.git   发现存在了git泄露

借助kali里面,打开GitHack所在的目录,然后

输入:

python2 GitHack.py -u url/.git/

必须要用Python2

tree 命令  可以看到完整目录

接下来,输入

git diff HEAD^


 Stash

同样步骤后

输入 git stash list

输入 git stash pop

最后cat一下


index

跟上面的步骤差不多


知识点:

      1.什么叫做git泄露?

     git泄露指的是开发人员在开发过程中遗忘删除 .git 文件夹,导致攻击者可以通过 .git 文件夹中的信息获取开发人员提交过的所有源码。从而导致服务器被攻击沦陷。

      2.git泄露原理

    通过泄露的.git文件夹下的文件,还原重建工程源代码

    解析.git/index (index 这个文件就是我们后面提到的暂存区(stage),是一个二进制文件)文件,找到工程中的所有

      去 .git/objects/(objects 所有的Git对象都会存放在这个目录中,对象的SHA1哈希值的前两位是文件夹名称,后38位作为对象文件名)  文件夹下下载 对应的文件

  zlib解压文件,按原始的目录结构写入源代码    

    在git中,这些对象存储文件都是通过zlib进行压缩的,所以我们可以使用zlib将其解压出来,来看看这个文件里面存储的内容是什么:

解压代码如下:

import zlib
import requests
urla = "解压文件地址"
re = requests.get(urla)
ss = re.content
word = zlib.decompress(ss)
print(word)


 

3.   ./git

   使用git init初始化git仓库的时候,会生成一个.git的隐藏目录,git会将所有的文件,目录,提交等转化为git对象,压缩存储在这个文件夹当中。

利用  dirsearch鉴别git泄露就是利用这个原理

 4.git的基本命令和git库工作原理

git init

新建一个文件夹,初始化一个空的git仓库

git add

将工作目录中对文件的修改或新增添加到暂存区(stage)。git被通知要追踪文件的修改

git commit

将暂存区的文件提交到版本库中,永久保存

git status

查看git库中文件的状态。已经被修改的文件,暂存的文件,未被跟踪的文件

tree

以树状图的形式列出目录的所有内容

创建一个文件,并用git add追踪它,再用git commit提交

git log

查看所有的提交数据

git ls-files -u

显示冲突的文件,-s是显示标记为冲突已解决的文件

git diff

对比工作区和stage文件的差异

git diff -cached

对比stage和branch之间的差异

git ls-files -stage

检查保存在stage的文件

git reset -hard HEAD

放弃工作区和index的改动,HEAD指针(这个文件包含了一个档期分支(branch)的引用,通过这个文件Git可以得到下一次commit的parent)仍然指向当前的commit

git checkout 

恢复被修改的文件

git reflog
查看回滚之前的版本

git stash

保存当前工作目录的临时状态

git stash save  “message”

将保存到当前工作目录状态到一个新的stash,并添加一条可选的消息来描述stash的内容

git stash list

查看当前保存的stash列表

git stash show

查看最新的stash

git stash apply

将某个stash的变更应用到当前工作目录

git stash  pop

与git stash apply相似,但是应用完后删除

git stash --all

保存所有修改

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/9235.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MATLAB 自定义实现点云随机抽稀方法(66)

MATLAB 自定义实现点云随机抽稀方法(66) 一、算法介绍二、算法实现1.代码2.结果三、数据链接一、算法介绍 MATLAB虽然提供了点云随机抽稀的内置函数,但是我们也可以自己实现这个功能,有助于理解,下面是具体的实现效果和代码(直接复制粘贴即可使用): 使用提供的数据直接…

SSD存储基本知识

存储技术随着时间的推移经历了显著变化,新兴的存储介质正逐步挑战已经成为行业标准的硬盘驱动器(HDD)。在众多竞争者中,固态硬盘(SSD)是最广泛采用且最有潜力占据主导地位的——它们速度快、运行安静&#…

信息收集篇 V1.1

零、 前言 0.1 话说 0.2 更新 0.3 致谢 一、 whois 1.1 常用在线收集whois信息站点: 1.2 查询企业的备案信息,主要的三种方式: 1.3 网站真实IP 1.4 旁站C端 二、 子域名 2.1 谷歌语法 2.2 第三方网站聚合了大量的DNS数据,…

python头歌买入股票

在Python中模拟买入股票的过程可以通过多种方式实现,这取决于你想要实现的复杂程度以及是否需要与实际的股票交易所进行交互。以下是几种不同层次的实现方式: 1. 简单的模拟买入 如果你只是想在Python中模拟买入股票的过程,而不涉及真实的交…

Langchain实战

感谢阅读 LangChain介绍百度文心API申请申请百度智能云创建应用 LLMChain demo以及伪幻觉问题多轮对话的实现Sequential ChainsSimpleSequentialChainSequentialChainRouter Chain Documents ChainStuffDocumentsChainRefineDocumentsChainMapReduceDocumentsChainMapRerankDoc…

【数据库】简单SQL语句

已知某图书管理数据库有如下表格: 用户表user、部门表dept、角色表role、图书表book、图书分类表book_classify、图书借阅表book_borrow、还书表book_return、借阅预约表book_appoint、图书遗失表book_lose; 用户表user、部门表dept、角色表role、图书表book、图书…

yum 卸载 MySQL

在 CentOS 上使用 yum 卸载 MySQL 时,你需要确保你卸载的是整个 MySQL 服务器和相关组件,而不仅仅是客户端或库。以下是如何使用 yum 卸载 MySQL 的步骤: 首先,确定你已经安装了哪些与 MySQL 相关的包。你可以使用以下命令列出所有…

C语言 变量的作用域

今天 我们来说变量的作用域和存储类型 每种事物 都有自己作用的范围限制 例如 汽车只能在路上跑 轮船只能在海洋 飞机只能通行于天空 函数的参数 也只有在函数被调用过程中分配内存资源 函数执行结束 空间也会被立即释放 这也说明了 行参变量只有在函数内才有效 离开了该函数 …

【Linux】项目自动化构建工具make/makefile的简单使用

使用步骤 1) 编写 创建 makefile 文件 vim makefile用 vim 打开名为 makefile 的文件,存在该文件则打开编辑,不存在则创建并打开.在 makefile 文件中编写需要编译的文件 test:test.cppg -o test test.cpp第一行: 冒号左侧为编译后的可执行文件名,可以随便取. 冒号右侧为依赖…

封装一个可以最小化和展开的弹窗组件

gl-dialog 大概思路: 在弹窗组件内部引入gl-dialog-collapse,这个组件主要用于存储已经被最小化的弹窗(基础数据) 弹窗内部的数据如何在父组件拿到是通过作用域插槽来实现的 gl-dialog接收一个tempData这个数据会在内部被记录下来…

salmon使用体验

文章目录 salmon转录本定量brief模式一:fastq作为输入文件需要特别注意得地方 模式二: bam文件作为输入 salmon转录本定量 brief 第一点是,通常说的转录组分析其中有一项是转录本定量,这是一个很trick的说话,说成定量…

代码随想录算法训练营第四十二天| 01背包问题(二维、一维)、416.分割等和子集

系列文章目录 目录 系列文章目录动态规划:01背包理论基础①二维数组②一维数组(滚动数组) 416. 分割等和子集①回溯法(超时)②动态规划(01背包)未剪枝版剪枝版 动态规划:01背包理论基…

基于Vue3与ElementUI Plus酷企秀可视化设计器中的创新应用

一、引言 随着科技的快速发展,前端技术已经从简单的网页呈现进化到了复杂的数据可视化、互动体验和跨平台应用的构建。酷企秀可视化设计器作为一个集成了多种前端技术的创新平台,不仅为企业提供了全方位的数字化展示解决方案,还在多个行业领…

Java实现NFS文件上传、下载和读取功能的工具类

Java实现NFS文件上传、下载和读取功能的工具类 引言:代码示例一、准备工作二、工具类设计与核心方法三、异常处理与性能优化四、总结 引言: NFS(Network File System)广泛应用于分布式环境的情况下,这里介绍使用Java工…

SRC上分秘诀+实战挖掘+挖洞技巧+新手上路+详细讲解

SRC马上到来 可能有些好兄弟们还没有头绪 只会做一些靶场 并没有什么实战经验 所以这篇文章给大家分享一下我挖洞2个月的经验分享 适合新手上路 如何找站? 谷歌搜索 谷歌搜索 谷歌搜索 SQL注入XSS所有漏洞 inurl:.php?idxx 公司inurl:.asp?idxx 公司inurl:.jsp?…

【考研数学】强化《660》和《880》先做哪个?

880和660一般在强化阶段做 这两本习题各自的特点是: 660题是专门训练客观题的,难度较大,对于基础知识点的考察比较深入,如果你的基础不好,去做660题很有可能被打击到,这个时候不要担心,很正常&a…

「AIGC」Agent AI智能体的未来:技术、伦理与经济的交汇点

Agent AI智能体,作为人工智能领域的前沿技术,正逐渐渗透到社会的各个层面。随着技术的不断进步,Agent AI智能体在提高效率、促进创新、甚至重塑社会结构方面展现出巨大潜力。然而,这也带来了一系列挑战,包括技术发展、…

cf240-B-Mashmokh and ACM DP

https://codeforces.com/contest/414/problem/B 题意: 在[1,n]范围内 构造出一个长度为k的数组 使得a[i1]%a[i]0 求出数组的个数%1e97 思考: 在一开始,会去想这是一道数学题,似乎得出某个式子便可以得出结果,因此就开始一个一个的去构造尝试,当构造了几个样例后,也许会发现…

Mysql基础篇(一)Mysql概述

目录 基本概念 数据库(DataBase,DB) 数据库的定义 数据库的分类 数据库管理系统(DataBase Management System,DBMS) SQL(Structured Query Language) Mysql Mysql数据模型 下载安装Mysql 基本概念 数据库(DataBase,DB) 数据库的定义 按照数据结构来组织、存储和管理数…

Springboot整合Minio,2024版教程

Springboot整合Minio,2024版教程 介绍安装方式代码pomymlconfigMinioService 推荐文章 介绍 CSDN里面找资料真的是垃圾堆里刨食吃。优质作者和内容非常少,最近还出现了评论下方打广告的,粉丝上w,文章内容质量主打一个抄袭&#xf…