git文件致源码泄露

前言:在一道ctf题的驱动下,我进行了对git和.git文件致源文件泄露的学习。

一、任务


ctf_git

一道ctf题目。

二、确定题目考的点

谷歌关键词:版本管理工具 github ctf

由得到的结果猜测,可能考的点是.git文件导致源文件泄露。

三、对git的粗略学习

其实经常会用到git,例如在用hexo+github pages搭建博客的时候就用到了git,又如在linux下载一些工具的时候,用到的git clone。

git:分布式版本控制系统。

首先,何为版本控制系统?以git的诞生故事来解释,linus在开发linux的时候,有世界广大热心的志愿者的帮助,最开始都是志愿者把源码down下来改了后在发给linus,linus再手工合成。当然linux源码大了后自然很不方便,又由于CVS、SVN(集中式版本控制系统)慢且需联网,又经历了一些事件后,linus用C语言开发了git,此后,源码的每次改动都会有记录,即每个版本都有记录。其实可以类比gitbub的功能。

何为分布式?分布式即与集中式对立,集中式是有一个中央服务器来存储源码,用户每次修改源码都需要从中央服务器把源码down下来,修改后再提交到中央服务器。而分布式则是每个人电脑里都有完整的版本库。

对理解git工作原理的重要知识点:工作区和暂存区

工作区就是电脑里看到的目录。

工作区

暂存区在版本库里,版本库就是隐藏目录.git。一张图明了。stage是暂存区,master是分支,我觉得就是所有文件存储的地方。

版本库

我们把文件往git版本库添加的时候,分两步:

1、git add :文件添加到暂存区

2、git commit :暂存区的所有文件添加到master

关于git的学习推荐廖雪峰老师的教程:https://www.liaoxuefeng.com/wiki/896043488029600 我的上面的内容基本都是从他的教程里提炼出来的。

四、学习.git 文件导致源码泄露

开发人员在开发时,常常会先把源码提交到远程托管网站(如github),最后再从远程托管网站把源码pull到服务器的web目录下,如果忘记把.git文件删除,就造成此漏洞。利用.git文件恢复处网站的源码,而源码里可能会有数据库的信息。

利用工具有挺多的:githack githacker git_extract

想了想,其实自己的博客就有.git文件。

blog_git

本来想用githacker 扫一下,没东西出来,嗯。。哦,上传到github的时候.git文件没有上传上去,我的github博客项目里确实没有.git。自然也就不会扫到.git。想想也是,哪这么容易呢。

关于.git文件导致源码泄露更多:https://www.jianshu.com/p/edae09535ea3

五、CTF题解法

在用了网上的解法,恢复了网站的源文件,发现flag文件不在。

没想到flag文件其实是在github仓库的历史commits中。

猜你喜欢

转载自www.cnblogs.com/As-usua1/p/12237058.html
今日推荐