题目描述
Solution
打开题目,观察网页页面:
我们用 dirsearch 扫描目录,观测到有可疑的.svn
目录:
dirsearch -u challenge-2b34504485779e7a.sandbox.ctfhub.com:10800/ -e php
SVN 是和 Git 类似的版本管理工具。使用 svn checkout
后,项目目录会产生一个隐藏的 .svn
文件夹。
svn 1.6 及以前版本会在项目的每个文件夹都生成一个.svn
文件夹,里面包含了所有文件的备份。
svn 1.7 及以后版本只在项目根目录生成一个.svn
文件夹,里面的 pristime 文件夹里包含了整个项目的所有文件备份。它里面有一堆00
到ff
的文件夹,每个文件夹里有若干个.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/
下载完后当前路径下会多出一个index.html
和.svn
文件夹。我们进入.svn
文件夹:
我们分别尝试读取里面的内容,最终在e5
文件夹下找到 Flag: