信息泄露-CTFHub

前言

本文是作者由CSDN博客迁移而来,原文地址:https://blog.csdn.net/2302_81178149/article/details/142724244

在众多的CTF平台当中,CTFHub对于初学者来说,是入门平台的不二之选。CTFHub通过自己独特的技能树模块,可以帮助初学者来快速入门。具体请看官方介绍:CTFHub

 作者的CTFHub技能树汇总:

CTFHub技能树Web汇总-CSDN博客

目录遍历

一、wp

挨个对里面的目录进行寻找,但是flag每次出现的位置都随机,多找找就可以发现,最终可以在某个目录中找到flag

二、题目考点

由于配置错误导致网站的目录可被遍历,一般该类漏洞可以为后续利用提供一些信息上的帮助

PHPINFO

一、wp

点击查看

用Ctrl+F查找flag必有的ctfhub{,找到flag。

(作者发现这里面有两个位置有flag,不过是一模一样的)

二、题目考点

phpinfo() 是php中查看相关信息的函数,当在页面中执行phpinfo()函数时,php会将自身的所有信息全部打印出来。在phpinfo中会泄露很多服务端的一些信息。

例如安装的一些模块、网站绝对路径、服务器自身的操作系统、使用的组件版本等等,在phpinfo中获得的这些信息会为下一步的渗透/做题提供一些帮助

备份文件下载

网站源码

一、wp

当开发人员在线上环境中对源代码进行了备份操作,并且将备份文件放在了 web 目录下,就会引起网站源码泄露。

题目应该就是让我们找备份的“源代码”(实际过程中我们找的是源代码,但这里应该是flag),这个源代码可能备份在下面提示中

顾名思义,备份文件备份的都是文件,所以遍历一下上面的文件名及后缀。

在这里给出四种扫描方法:

1、御剑

御剑有点坑,将超时延长,并且只扫DIR(目录;显示文件列表),还得多扫几次才行。

所以御剑最好还是得自定义目录(把题目给的添加上去)。

2、dirsearch

暴力扫就可以,除了慢没啥缺点。

查看返回值,大部分都是503,返回200的表示可以访问

3、burpsuite

相对而言比较复杂,但是比较贴近题目,充分利用了题目的提示

抓包,发送到Intruder,

在GET/后面(即网站地址处)添加两个负载,一个文件名,一个扩展名,用cluster bomb,

爆破文件名,这里需要添加一个后缀:.(点)

(也可以在payload2备份文件格式的前面加前缀 . )

爆破扩展名, 注意两者都不用payload encoding

开始攻击,出货

注:载荷尽量自己写,作者直接复制题目提示的,发现不合规范,不出flag

4、最后一种方法,如果不怕麻烦,也可以自己一个个试(人工扫描)

二、题目考点

当开发人员在线上环境中对源代码进行了备份操作,并且将备份文件放在了 web 目录下,就会引起网站源码泄露。这里有诸多目录,要求从中找出有效文件

三、相关知识

1、御剑的使用

Web安全常用工具 (持续更新)-CSDN博客

2、dirsearch的使用

Web安全常用工具 (持续更新)-CSDN博客

3、备份文件的访问

不要忽视对网站备份文件的搜查,里面可能会有有用的信息

bak文件

一、wp

当开发人员在线上环境中对源代码进行了备份操作,并且将备份文件放在了 web 目录下,就会引起网站源码泄露。

<法1>、

一进去就说flag在index.php中,在当前网址加上/index.php,没反应,考虑到是bak文件,输入/index.php.bak(要把题目提示结合起来考虑),下载了一个文件,用记事本打开,出flag

<法2>、

也可以用curl打开index.php.bak,殊途同归

<法3>、

用dirsearch也可以直接扫出来,这样是最简单的方法,扫出来在加到url上,也可以下载

二、题目考点

1、进一步考察web目录下的备份文件,这一题与网站源码一题一样,都是将源码备份,放在web目录下,不过这次是bak文件。

2、bak文件泄露:有些时候网站管理员可能为了方便,会在修改某个文件的时候先复制一份,将其命名为xxx.bak。而大部分Web Server对bak文件并不做任何处理,导致可以直接下载,从而获取到网站某个文件的源代码

三、相关知识

1、 bak 是一个 备份文件 ,是一个文件格式的扩展名。这类文件一般在.bak前面加上应该有原来的扩展名比如windows.dll.bak,或是windows_dll.bak,有的则是由原文件的后缀名和bak混合而成。

很多软件都会创建一个备份文件,当软件不小心因为删除或者机器意外关闭时,可以通过软件当时创建的备份文件继续编辑,为软件使用者减少了较大工作和损失。

2、附加知识点:文件恢复打开

一般来讲 ,.bak文件作为备份文件,可以通过直接重命名,把bak替换成原文件的格式就可以恢复此文件并且正常打开了。

举个简单例子:在autocad文件移动的时候有时会产生.bak文件,比如现在有一个asdfjk.dwg文件的备份文件asdfjk.bak ,想要把备份文件恢复成正式文件 只需要对该备份文件重命名把bak替换为dwg就可以打开了 。

同样,如果是word文件的备份文件只要把bak换成doc就可以了。(其实可以改成任何文件格式)。但是,加密过的.bak文件是无法通过修改重命名来打开的,就是打开了也是乱码。

vim缓存

一、wp

当开发人员在线上环境中使用 vim 编辑器,在使用过程中会留下 vim 编辑器缓存,当vim异常退出时,缓存会一直留在服务器上,引起网站源码泄露。

<法1>、

直接在url上加上/index.php,毫无反应,再加上vim,也不好使。

在这里要知道vim异常退出时,会产生swp文件,但是输入/index.php.swp也不行,然后需要知道swp是隐藏文件,最前面要加点.,应该输入/.index.php.swp,成功下载文件,记事本打开,得到flag

<法2>、

利用curl访问(道理同上)即可直接看到flag,因为vim使用的缓存存储为一种固定格式的二进制文件。而我们一般编辑的时明问可见字符,在vim的缓存中这些可见字符会原样保留

<法3>、

这是最贴近题目的,之前的查看方式都会有乱码。

先用wget下载.index.php.swp

这里有两种打开方式

1)直接用vim打开下载的文件vim -r .index.php.swp,回车

出flag

2)先恢复再打开,输入 vim index.php 去打开index.php,发现交换文件,按r恢复

出flag

二、题目考点

1、Vim异常退出后产生的文件

2、隐藏文件的访问

3、linux中vim的应用

      参考文献:

      vim命令大全-CSDN博客

三、相关知识

1、swp文件

1)vim中的swp是swap(交换分区)的简写,在编辑文件时产生,它是隐藏文件。这个文件是一个临时交换文件,用来备份缓冲区中的内容。类似于Windows的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。如果文件正常退出,则此文件自动删除。如果并没有对文件进行修改,而只是读取文件,是不会产生swp文件的。

2)在使用vim时会创建临时缓存文件,关闭vim时缓存文件则会被删除,当vim异常退出后,因为未处理缓存文件,导致可以通过缓存文件恢复原始文件内容。以 index.php 为例:第一次产生的交换文件名为 .index.php.swp;

再次意外退出后,将会产生名为 .index.php.swo 的交换文件;

第三次产生的交换文件则为 .index.php.swn;

2、隐藏文件的访问

 .swp是隐藏文件,因此最前面有.,即 .index.php.swp,(注意是index前面的点)。

 3、vim编辑器的使用

vim -r 可以查看当前目录下所有的swp文件。

vim -r filename可以恢复文件,这样上次意外退出没有保存的修改,就会覆盖文件。

.DS_Store

一、wp

.DS_Store 是 Mac OS 保存文件夹的自定义属性的隐藏文件。通过.DS_Store可以知道这个目录里面所有文件的清单。

<法1>、尝试访问url/.DS_Store(用dirsearch可以直接扫出来),下载文件,记事本打开,看到 flag here!,但有好多空格,我们用记事本的编辑功能,然后点击替换,将空格替换成空,就是把所有的空格清除,得到下面的内容。

注:.txt后面一串字符,其中notuestr是注释的意思,这串字符的意思是“注释 flag 在这!”

所以我们只复制到.txt,尝试粘贴到url中访问,获得flag

<法2>、Curl也可以

没有空格,不需要去替换

<法3>、使用Linux系统打开文件

然后在url中访问

<法4>、工具Python-dsstore

使用Python-dsstore工具查看该文件

访问url/.DS_Store,把下载下来的文件复制到Python-dsstore文件夹中,

然后在Python-dsstore文件夹处打开cmd,输入以下命令

python main.py 无标题.DS\_Store

注:这里“无标题.DS_Store”是作者下载的文件的名字,大家如果改名了或者名字不相同,应该用自己下载的文件的名字

二、题目考点

DS_Store 文件利用。

题目描述:DS_Store 是 Mac OS 保存文件夹的自定义属性的隐藏文件。通过.DS_Store可以知道这个目录里面所有文件的清单。

三、相关知识

1、工具Python-dsstore的应用

具体内容请看作者的另一篇文章:

Web安全常用工具 (持续更新)-CSDN博客

2、linux常用指令

这里只讲cat及类似命令

cat 命令:用于查看文本文件的内容,后接要查看的文件名,通常可用管道与 more 和 less 一起使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
cat file1 从第一个字节开始正向查看文件的内容

cat -n file1 标示文件的行数

cat xxx.txt awk ‘NR%2==1’

tac file1 从最后一行开始反向查看一个文件的内容

more file1 查看一个长文件的内容

less file1 类似 more 命令,但允许方向操作

head -n 2 file1 查看一个文件的前两行

tail -f /log/msg 实时查看添加到⽂件中的内容

tail -n 2 file1 查看一个文件的最后两行

tail -n +1000 file1 从1000行开始显示,显示1000行以后的

cat filename | head -n 3000 | tail -n +1000 显示1000行到3000行

cat filename | tail -n +3000 | head -n 1000 从第3000行开始,显示1000(即显示3000~3999行)

grep ss hello.txt 在⽂件hello.txt中查找关键词 ss

grep ^s hello.txt 在⽂件hello.txt中查找以 s 开头的内容

grep [0-9] hello.txt 选择hello.txt⽂件中所有包含数字的⾏

sed 's/ss/mm/g' hello.txt 将hello.txt⽂件中的 ss 替换成 mm

sed '/^$/d' hello.txt 从hello.txt⽂件中删除所有空⽩⾏

sed '/ *#/d; /^$/d' hello.txt 从hello.txt⽂件中删除所有注释和空⽩⾏

sed -e '1d' hello.txt 从⽂件hello.txt 中排除第⼀⾏

sed -n '/s1/p' hello.txt 查看只包含关键词"s1"的⾏

sed -e 's/ *$//' hello.txt 删除每⼀⾏最后的空⽩字符

sed -e 's/s1//g' hello.txt 从⽂档中只删除词汇s1并保留剩余全部

sed -n '1,5p;5q' hello.txt 查看从第⼀⾏到第5⾏内容

sed -n '5p;5q' hello.txt 查看第5⾏

paste file1 file2 合并两个⽂件或两栏的内容

paste -d '+' file1 file2 合并两个⽂件或两栏的内容,中间⽤"+"区分

sort file1 file2 排序两个⽂件的内容

sort file1 file2 uniq

sort file1 file2 uniq -u

sort file1 file2 uniq -d

comm -1 file1 file2 ⽐较两个⽂件的内容(去除’file1’所含内容)

comm -2 file1 file2 ⽐较两个⽂件的内容(去除’file2’所含内容)

comm -3 file1 file2 ⽐较两个⽂件的内容(去除两⽂件共有部分)

3、.DS_Store 是什么文件

.DS_Store(英文全称 Desktop Services Store)是一种由苹果公司的Mac OS X操作系统所创造的隐藏文件,目的在于存贮目录的自定义属性,例如文件们的图标位置或者是背景色的选择。

相当于 Windows 下的 desktop.ini。

Git泄露

Log

一、wp

看题目,很明显是git泄露

用dirsearch一扫,确实是git泄露

使用 GitHack 工具 clone 目标源代码到本地

相关文件被储存到了最后一行的地方,然后我们进入dist/challenge-037e8b2de8d972bf.sandbox.ctfhub.com_10800中

打开终端,执行 git log 查看历史记录

发现add flag这次提交很可疑,

<法1>

直接与 add flag 这次提交进行比对(写前几个字符就行),  

1
git diff 460a

出flag

<法2>

直接切换到 add flag (460a) 这个版本,  

1
git reset --hard 460a

这个命令可以切换为之前的版本,输入完成后最后一个文件夹下会多出一个.txt文件,打开后就有flag。

二、题目考点

1、git泄露

2、查看历史记录 git log

3、切换版本 git reset

4、对比两次提交 (查看变更内容)git diff

三、相关知识

1、git教程

点此链接进行了解:

Web安全常用工具 (持续更新)-CSDN博客

2、git log详解 (log日志)

git log 可以让我们查看提交commit,接下来我们来一起探索git log提供的参数。

1) --oneline

这个命令简化git log的默认的输出,仅仅输出commit hash 前7个字符串(不显示一大堆)和commit message.

git log默认会输出commit hash(提交对象的哈希值), author(提交人), date(提交时间), commit message(提交说明).

2) --stat

--stat:是在git log 的基础上输出文件增删改的统计数据。

3)-p

-p:控制输出每个commit具体修改的内容,输出的形式以diff的形式给出。

4 )git show

git show命令同git log -p输出类似,只不过它只显示一个commit的内容,如果不指定commit hash, 它默认输出HEAD指向commit的内容.

5 )git shortlog

这个命令用来输出汇总信息,以作者进行分类。

git shortlog -s:可以用来统计每个作者的commit数量

git shortlog -n:可以用来对统计的量进行倒序排列

6 )--pretty

我们可以用–pretty来自定义输出的信息

8 )限定log输出

直接在log命令之后,加 -n参数即可,n表示你要输出的数量.

9) 限定指定日期范围的log

--after--before

10 )控制是否显示merge的commit

--merges或者--no-merges

11) --decoreate

该参数用来控制log输出时,显示对应commit所属的branch和tag信息

3、GitHack的使用

具体内容点击此链接:

Web安全常用工具 (持续更新)-CSDN博客

Stash

一、wp

 不用dirsearch扫也可以看出是git泄露

直接用GitHack扫描,具体方式同上题

发现已经Clone success

题目是stash,优先考虑git的stash命令

执行git stash list :查看stash了哪些存储;

执行git stash pop:恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0}

出文件了,可以直接cat,也可去打开文件

出flag

二、考点

  • stash 用于保存 git 工作状态到 git 栈,在需要的时候再恢复。

三、相关知识

git stash详解(Stash 翻译为藏匿,隐藏)

1、git stash命令是干甚的

它会保存当前工作进度,会把暂存区和工作区的改动保存到一个未完结变更的堆栈中;执行完这个命令后,在运行 git status 命令,就会发现当前是一个干净的工作区,没有任何改动。注:git stash 是本地的,不会上传到服务器上。

简单来说, **git stash**这个命令可以将当前的工作状态保存到git栈,在需要的时候再恢复。

2、使用场景

由上点可推断出git stash的使用场景:

当在一个分支的开发工作未完成,却又要切换到另外一个分支进行开发的时候,可以先将自己写好的代码,储存到 git 栈,进行另外一个分支的代码开发。这时候 git stash命令就派上用场了!

3、使用

1)git stash的相关命令

<1>git stash

        保存当前的工作区与暂存区的状态,把当前的修改的保存到git 栈,等以后需要的时候再恢复,git stash 这个命令可以多次使用,每次使用都会新加一个stash@{num},num是编号

<2>git stash save '注释'

        作⽤等同于git stash,区别是可以加⼀些注释, 执⾏存储时,添加注释,⽅便查找,例如git stash save ‘test’

<3>git stash pop

        默认恢复git栈中最新的一个stash@{num},建议在git栈中只有一条的时候使用,以免混乱                   

        注:该命令将堆栈中最新保存的内容删除

(即恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,就是stash@{0},如果要应用并删除其他stash,命令:git stash pop stash@{$num} ,比如应用并删除第二个:git stash pop stash@{1})   

<4>git stash list

        查看当前stash的所有内容

<5>git stash apply

        将堆栈中的内容恢复到当前分支下。这个命令不同于 git stash pop。该命令不会将内容从对堆栈中删除,也就是该命令能够将堆栈的内容多次运用到工作目录,适合用与多个分支的场景

        使用方法:git stash apply stash@{$num}

<6>git stash drop

        从堆栈中移除指定的stash

        使用方法:git stash drop stash@{$num}

<7>git stash clear

        移除全部的stash

<8>git stash show

     查看堆栈中最新保存的stash和当前⽬录的差异,显⽰做了哪些改动,默认show第一个存储

命令名 作用
git stash 隐藏当前的工作现场,此时,git status的结果是 clean
git stash list 查看所有隐藏,每一行的冒号前面的字符串就是标识此隐藏的id
git stash apply 重新显示标识为 id 的隐藏
git stash drop git apply恢复隐藏后,需要手动删除 list 列表中的记录
git stash pop 恢复最新的进度到工作区
git stash pop stash@[stash_id] 恢复指定的进度到工作区

2)使用流程

 <1>执行 git stash

<2>查看刚才保存的工作进度 git stash list (一般先使用 git stash list 查看有没有已经 stash 的记录,避免和自己的混淆,到时候使用时不知道是哪条记录)

保存注释的长这样:

 可以看到 stash@{0} 是刚才保存的

<3> 这时候在看分支已经是干净无修改的(改动都有暂存到 stash)

<4> 现在就可以正常切换到目标分支,进行相应操作(假设要操作master分支)

<5> 其他分支处理完成,再切回来使用刚才的 stash, 还是先查看 暂缓列表

<6> 选择使用暂缓 git stash apply n

注:n 是序号,如下图红色箭头指示

这时就看到刚才保存的工作进度,已经原样恢复~大功告成!

Index

一、wp(基本同上)

用dirsearch一扫,发现git泄露(不用扫也可以)

再用GitHack扫

到相应的文件夹,发现直接就有txt文件,打开,出flag

二、相关知识

Index :索引

SVN泄露

一、wp

根据题目,显然是SVN泄露(其实应该先用dirsearch先扫的,这才是一个较完整的流程)

扫描发现有 .svn/ 目录,确认是 .svn 泄露。

进入dvcs-ripper所在目录,使用 dvcs-ripper 中的 rip-svn.pl 脚本进行 clone,将泄露的文件下载到本地目录中。(注:要先安装工具所需依赖库)

<法1>

这里由于是隐藏的,所以我们利用tree命令,用tree .svn的命令查看.svn中的历史。(注:使用svn checkout后,项目目录下会生成隐藏的.svn文件夹,Linux上用ls命令看不到,要用ls -al命令,所以这里也可以用ls -al命令,但没tree命令看的清晰)

网页提示说flag在服务端旧版本的源代码中,那么应该检查一下pristine文件是否存放flag

寻找 .svn/pristine/ 中的文件,

先找bf中的,发现是源代码,再找de中的,发现flag

<法2> 也可以用ctrl+H显示隐藏文件夹,出现.svn文件夹

也找到pristine文件夹(tree命令可以显得更清晰点,或许可以帮到忙)

照常找到flag。

二、题目考点

svn 目录结构

三、相关知识

1、svn

Subversion,简称SVN,是一个开放源代码的版本控制系统,相对于的RCS、CVS,采用了分支管理系统,它的设计目标就是取代CVS。互联网上越来越多的控制服务从CVS转移到Subversion。

简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。

集中式管理的工作流程如下图:

Subversion使用服务端—客户端的结构,当然服务端与客户端可以都运行在同一台服务器上。在服务端是存放着所有受控制数据的Subversion仓库,另一端是Subversion的客户端程序,管理着受控数据的一部分在本地的映射(称为“工作副本”)。在这两端之间,是通过各种仓库存取层(Repository Access,简称RA)的多条通道进行访问的。这些通道中,可以通过不同的网络协议,例如HTTP、SSH等,或本地文件的方式来对仓库进行操作。

相比而下,经典的git开发过程:

2、svn与git

由上两图,我们推广出SVN和Git的区别:

1)SVN属于集中化的版本控制系统,有个不太精确的比喻:SVN = 版本控制+ 备份服务器

SVN使用起来有点像是档案仓库的感觉,支持并行读写文件,支持代码的版本化管理,功能包括取出、导入、更新、分支、改名、还原、合并等。

Git是一个分布式版本控制系统,操作命令包括:clone,pull,push,branch ,merge ,push,rebase,Git擅长的是程序代码的版本化管理。

2)GIT跟SVN一样有自己的集中式版本库或服务器。但,GIT更倾向于被使用于分布式模式,也就是每个开发人员从中心版本库/服务器上chect out代码后会在自己的机器上克隆一个自己的版本库。可以这样说,如果你被困在一个不能连接网络的地方时,就像在飞机上,地下室,电梯里等,你仍然能够提交文件,查看历史版本记录,创建项目分支,等。对一些人来说,这好像没多大用处,但当你突然遇到没有网络的环境时,这个将解决你的大麻烦。

3)GIT把内容按元数据方式存储,而SVN是按文件

所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。如果你把.git目录的体积大小跟.svn比较,你会发现它们差距很大。因为,.git目录是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等。

4)分支在SVN中一点不特别,就是版本库中的另外的一个目录。如果你想知道是否合并了一个分支,你需要手工运行像这样的命令svn propget svn:mergeinfo,来确认代码是否被合并。然而,处理GIT的分支却是相当的简单和有趣。你可以从同一个工作目录下快速的在几个分支间切换。你很容易发现未被合并的分支,你能简单而快捷的合并这些文件。

5)GIT没有一个全局的版本号,而SVN有

目前为止这是跟SVN相比GIT缺少的最大的一个特征。你也知道,SVN的版本号实际是任何一个相应时间的源代码快照。我认为它是从CVS进化到SVN的最大的一个突破。因为GIT和SVN从概念上就不同,我不知道GIT里是什么特征与之对应。

6)GIT的内容完整性要优于SVN:

GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

3、dvcs-ripper工具的使用

1)运行示例(适用于 SVN):

1
./rip-svn.pl -v -u http://www.example.com/.svn/

It will automatically do svn revert -R .

它会自动执行 svn revert -R .

2)注意事项

使用svn checkout后,项目目录下会生成隐藏的.svn文件夹(Linux上用ls命令看不到,要用ls -al命令)。

svn1.6及以前版本会在项目的每个文件夹下都生成一个.svn文件夹,里面包含了所有文件的备份,文件名为 .svn/text-base/文件名.svn-base

svn1.7及以后版本则只在项目根目录生成一个.svn文件夹,里面的pristine文件夹里包含了整个项目的所有文件备份

具体内容请点此链接:Web安全常用工具 (持续更新)-CSDN博客

4、Linux常用的文件查看命令:

1)cat :由第一行开始显示文件内容;

2)tac:从最后一行开始显示,可以看出tac与cat字母顺序相反;

3)nl:显示的时候输出行号;

4)more:一页一页的显示文件内容;

5)less与more类似,但它可以向前翻页;

6)head:只看前几行;

7)tail:只看最后几行;

8)od:以二进制的方式读取文件;

9)vi/vim:文本编辑器,也可以打开文件查看内容,这个是使用最为广泛的工具

HG泄露

一、wp

这里提示我们用HG,还是使用dvcs-ripper,这次使用rip-hg.pl脚本进行 clone。(这里出了一个小错误,使用工具时并不是官方文档中说的rip-hg.pl,而是./rip-hg.pl)

发现直接执行 hg status 出错,工具 clone 的时候并没有 clone 完整。不要过分迷信工具。

使用tree命令列出刚刚下载的.hg网站目录

看到一个.txt,打开看看,发现历史版本add flag,感觉没啥用

利用正则匹配找一下flag(使用正则表达式进行关键字查找,具体方法见下图),也可以在这个文件夹下一个一个找,但这样低效;还可以和上一题一样直接在文件夹里找,但也太麻烦;

结合题目提示,不太好使的情况下, 试着手工解决,在浏览器里输入这个flag文件(这里就直接用curl了);

出flag

上图太小了,又重新截了一张,下图是上图的放大版

二、题目考点

.hg 文件结构

Mercurial 的使用

三、相关知识

1、HG泄露漏洞

            Mercurial 是一种轻量级分布式版本控制系统,采用 Python 语言实现,易于学习和使用,扩展性强。其是基于 GNU General Public License (GPL) 授权的开源项目。

        在 Mercurial 轻量级分布式版本控制系统中,本地既可以当做版本库的服务端,也可以当做版本库的客户端。版本库与工作目录不同,版本库存放了所有版本,而工作目录只是因为特定需要存放特定版本。与 SVN 系统不同,SVN 的版本库集中在一台服务器中。这也导致很多初次使用 Mercurial 系统的工作者,因为操作失误导致出现 HG 泄露漏洞的主要原因。

2、dvcs-ripper的使用

具体内容请看作者的另一篇文章:Web安全常用工具 (持续更新)-CSDN博客


信息泄露-CTFHub
http://example.com/2025/05/04/6信息泄露-CTFHub/
作者
sangnigege
发布于
2025年5月4日
许可协议