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中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM