Git是一个分布式版本控制工具,是一个内容寻址文件系统。在我们使用git init初始化Git仓库的时候,会生成一个.git的隐藏目录,Git会将所有的文件,目录,提交等转化为git对象,存储在这个文件夹当中。当开发人员直接提交的时候,漏洞就产生了。
先了解Git的基本命令,找到一张好图。可供速查。
先进行本地仓库初始化
git init
接着进行配置用户名和邮箱地址
git add xxx
git commit -m "xxx"
index 缓存
HEAD 现分支的恢复
logs/HEAD 日志
refs/stash 工作进度保存
refs/heads/master master 恢复
info/packs packs 文件提取恢复
refs/wip/index/refs/heads/master magit wip 模式 (PlaidCTF 2020)
refs/wip/wtree/refs/heads/master
可能重复但仍做恢复的项:
packed-refs
refs/remotes/origin/HEAD
ORIG_HEAD
FETCH_HEAD
其他信息项:
config
description
info/exclude
COMMIT_EDITMSG
也下载下来后通过git分支回滚的方法查看
git reset --hard commit-id :回滚到commit-id,讲commit-id之后提交的commit都去除
git reset --hard HEAD~4:将最近3次的提交回滚
Git的一些术语
Object(对象) 在 git 中,存储的数据将会保存至 .git/objects 目录下,内容经过 zlib 压缩,并且文件名使用 SHA1 Hash 命名。
Blob(数据对象) 在 git 中,源文件内容在 git 中的表现形式。
Tree object(树对象) 类似于一个目录 map,用于指向 blobs 和其他 tree objects
Commit object(提交对象) 用于指向一个 tree object,并且包含 commit author 和 parent commits
Tag object(标签对象) 用于指向一个 commit object,并且包含一些数据
Reference 用于指向单个 object。通常是一个 commit 或是一个 tag。存放在 .git/refs/ 目录下
Git的目录结构
├── HEAD — 当前 branch 指针。一般指向 refs/heads/ 里的 branch,包含一个分支(branch)的引用,通过这个文件Git可以得到下一次commit的parent
├── index — 当前branch 项目文件的 map,文件存储区域信息。
├── logs — 日志目录,保存所有更新的引用记录
│ ├── HEAD — 分支
├── objects — 项目文件目录
│ ├── info — pack文件指针(通常在客户端)
│ └── pack — pack文件目录
└── refs — branch 和 tags 目录,目录存储指向数据的提交对象的指针(分支)。
├── heads — 存放各个 branches 的指针
├── stash — 存放 stash文件
关注公众号,回复"Git工具",领取工具。
原文始发于微信公众号(Enginge):Git信息泄露
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论