ctf web方向与php学习记录13之信息泄露

git泄露
.git文件夹分析

ctf web方向与php学习记录13之信息泄露_第1张图片
hook:存放一些sheel的地方。
info:存放仓库的信息
object:存放所有git对象的地方
refs:存放提交hash的地方
config:github的配置信息
description:仓库的描述信息,主要给gitweb等git托管系统使用
HEAD:映射到ref引用,能够找到下一次commit的前一次哈希值

资料
git是一套内容寻址文件系统。
1.寻址方式

git采用HashTable的方式进行寻找。
这里使用的key就是文件(头+内容)的哈希值,value就是经过压缩后的文件内容

2.git对象的类型
Blob
tree
commit

3.Blob
blob对象可以存储所有的文件类型。

4.tree
tree对象是用来组织Blob对象的一种数据类型。树节点

5.commit
父节点

6.Git对象的存储方式
Key = sha1(file_header + file_content)
Value = zlib(file_content)
40位的sha-1校验和,将该校验和的前2位作为object目录中的子目录的名称,后38位作为子目录中的文件名
首先,是ctfhub中的信息泄露的log一题:
在git泄露中常用的脚本工具是githcak
脚本的工作原理:
1解析.git/index文件,找到工程中所有的: ( 文件名,文件sha
2去.git/objects/ 文件夹下下载对应的文件
3zlib解压文件,按原始的目录结构写入源代码
获取代码:https://github.com/lijiejie/GitHack

在使用githack前还需要安装git
https://github.com/git-for-windows/git/releases/latest
一,log
这道题首先用
SourceLeakHacker扫描发现是git泄露。
ctf web方向与php学习记录13之信息泄露_第2张图片然后用githack还原,在还原后的文件里,输入git log,git show找到flag。

ctf web方向与php学习记录13之信息泄露_第3张图片
二,stash
stash 用于保存 git 工作状态到 git 栈,在需要的时候再恢复。
有关git的指令,可以参照下面一个大佬的write up。
https://www.pianshen.com/article/23081853202/
ctf web方向与php学习记录13之信息泄露_第4张图片
三,index
至于这道题到底想考什么,我不清楚,但是按照之前的git log,git init(因为我在git log显示的目录中看见了flag和init所以就输着尝试了一下),git show——然后就发现flag了。

ctf web方向与php学习记录13之信息泄露_第5张图片
index在git中作为一个存储空间存在,具体的相关内容有待进一步学习。这里推荐两本书《Git版本控制管理(第2版)》《Git权威指南》,大家可以去看看。

你可能感兴趣的:(git,php)