CTFHub-Web-信息泄露-Git泄露

目录

一、Log

1、题目介绍

2、知识储备

3、解题步骤

(1)、查看页面

(2)、dirsearch扫描目录

(3)、Githack扫描

 (4)、git log历史查询

(5)、获取flag

二、Stash

1、知识储备:

2、githack扫描

3、获取flag

 三、Index

1、知识储备

2、dirsearch扫描

3、获取flag

 四、个人感悟


一、Log

1、题目介绍

2、知识储备

(1)、用的工具:dirsearch、Githack。(大家在GitHub上自己下载,也可以私聊)

Githack在使用前需要有确保git在环境变量里,下载如下:

ubuntu/debian: $ apt-get install git
redhat/centos: $ yum install git
windows:https://github.com/git-for-windows/git/releases/tag/v2.38.1.windows.1(下载地址)

(2)、GitHack是一个.git泄露利用脚本,通过泄露的.git文件夹下的文件,还原重建工程源代码。

(3)、Githack使用思路:1、Githack扫描;2、git log查看历史记录。

扫描语法:python GitHack.py http://www.target.com/.git/

3、解题步骤

(1)、查看页面

CTFHub-Web-信息泄露-Git泄露_第1张图片

(2)、dirsearch扫描目录

python dirsearch.py -u http://challenge-5a5d24023f7ea71c.sandbox.ctfhub.com:10800 -e git -t 5

CTFHub-Web-信息泄露-Git泄露_第2张图片 扫描结果:

CTFHub-Web-信息泄露-Git泄露_第3张图片

存在git泄露;

(3)、Githack扫描

进入GitHack文件夹,执行下列命令:

python GitHack.py http://challenge-e87e0210287ba7b3.sandbox.ctfhub.com:10800/.git/

CTFHub-Web-信息泄露-Git泄露_第4张图片

 进入这个文件夹,扫描结果存储在这

 (4)、git log历史查询

CTFHub-Web-信息泄露-Git泄露_第5张图片

总共有三个版本,经过查看发现在add flag这添加了flag,所以我们要恢复到这个版本;

(5)、获取flag

 得到flag有两种方法:

1、版本比对:git diff
用法:git diff <分支名1> <分支名2>

2、版本回退:git reset

用法:git reset --hard <分支名>

  •  版本比对

  • 版本回退
git reset --hard flag对应版本

 版本回退完成后会在该目录下生成一个txt文件,flag存在该文件里。

二、Stash

1、知识储备:

(1).git stash概念

.git stash用于想要保存当前的修改,但是想回到之前最后一次提交的干净的工作仓库时进行的操作。.git stash将本地的修改保存起来,并且将当前代码切换到HEAD提交上。

主要大家可以参考:git stash的详细讲解 - 简书 (jianshu.com)

(2)、会用到的命令

主要会用到:

git stash lish   #查看当前stash中的内容

git stash pop  #将当前stash中的内容弹出,并应用到当前分支对应的工作目录上,可以理解为恢复内容。

其他命令讲解可以参考: git stash命令详解

其他步骤与上述相同,直接来到GitHack扫描。

2、githack扫描

CTFHub-Web-信息泄露-Git泄露_第6张图片

箭头所指为文件内容,进入该文件夹;

3、获取flag

本关为stash,因此在githack扫描后,进入文件夹,输入git stash pop恢复缓存,执行后会恢复一个txt文件,里面存有flag。

 三、Index

1、知识储备

题目中的index并不是我们理解的web网页,而是一个暂存区,默认存储在.git/index。

关于index的具体知识点大家可以阅读一下这个大佬的文章:(Git本地库中的索引(Index)及文件状态概述_易生一世的博客-CSDN博客

2、dirsearch扫描

CTFHub-Web-信息泄露-Git泄露_第7张图片

3、获取flag

到了这一步,网上有大佬说是可以直接访问/.git/index,获取到文件,然后直接打开就可以得到flag;关于如何打开个人尝试了两种:直接打开二进制文件,linux下cat打开乱码,之后看帖子有个大佬说使用git checkout命令查看,我属实没有玩明白,实在研究不出来了,使用老办法。(个人能力问题,感兴趣的大家可以试着去学习这个)

老办法:

githack扫描 =》进入文件夹 =》git log查看历史 =》两个版本,直接进行git diff获取到flag 。

图如下:

CTFHub-Web-信息泄露-Git泄露_第8张图片

 四、个人感悟

做了这三个git泄露,只能说知识的匮乏,学习的路还很长;正式的挖掘不会像这个一样直接告诉你他是什么泄露,需要自己去尝试,另外感觉git这个东西很深啊,好难。路还长,共勉!

你可能感兴趣的:(#,靶场的WP,web安全,安全,git)