题目描述

Solution

打开题目,观察网页页面:

1.png

我们用 dirsearch 扫描目录,观测到有可疑的.svn目录:

  1. dirsearch -u challenge-2b34504485779e7a.sandbox.ctfhub.com:10800/ -e php

2.png


SVN 是和 Git 类似的版本管理工具。使用 svn checkout 后,项目目录会产生一个隐藏的 .svn文件夹。

svn 1.6 及以前版本会在项目的每个文件夹都生成一个.svn 文件夹,里面包含了所有文件的备份。

svn 1.7 及以后版本只在项目根目录生成一个.svn文件夹,里面的 pristime 文件夹里包含了整个项目的所有文件备份。它里面有一堆00ff的文件夹,每个文件夹里有若干个.svn-base 文件,文件命名规则是文件原名的哈希值,然后文件夹名称其实是文件的开头 2 位数。.svn/会有一个wc,db 二进制文件,里面包含项目里的所有代码及每个文件名及对应哈希后的值(知道对应的哈希值有助于找flag)。

这里会用到 dvcs-ripper 工具,它对应了 Git 下的 GitHack。该工具使用 Perl 语言编写的,我们先安装 Perl 环境:

sudo apt-get install perl libio-socket-ssl-perl libdbd-sqlite3-perl libclass-dbi-perl libio-all-lwp-perl

然后把 Github的项目克隆到本地。

进入项目目录后使用perl rip-svn.pl -v -u http://www.example.com/.svn/即可下载.svn泄露的文件。


我们使用工具来尝试获取泄露的.svn文件:

perl rip-svn.pl -v -u http://challenge-2b34504485779e7a.sandbox.ctfhub.com:10800/.svn/

3.png

下载完后当前路径下会多出一个index.html.svn文件夹。我们进入.svn文件夹:

4.png

我们分别尝试读取里面的内容,最终在e5文件夹下找到 Flag:

5.png