ctfhub信息泄露
目录遍历
题目背景
目录遍历是web中常见的基础操作,我们通常会通过目录的遍历来发现是否存在对我们有用的信息。
解答题目
首先打开靶机,启动环境,可以看到是一个Apach目录的遍历
目录遍历
- 首先F12一下,看看有没有什么惊喜,但是没有什么收获。
- 点开“点击开始寻找flag”
有两种思路:
- 一个一个点,挨个查询下列的子目录,可以在最后的3/4下找到flag.txt文件。
- 利用python脚本的requests库进行查询,脚本在下面。
#! /usr/bin/env python
# _*_ coding:utf-8 _*_
import requests
url = "http://challenge-88fe15103038d8b0.sandbox.ctfhub.com:10080/flag_in_here"
for i in range(5):
for j in range(5):
url_menu = url + "/" + str(i) + "/" + str(j)
r = requests.get(url_menu)
r.encoding = "utf-8"
get_file = r.text
if "flag.txt" in get_file:
print(url_menu)
以上就是脚本,最后python3 find_flag.py
运行即可
#!/usr/bin/env python #-*- coding: utf-8 -*- 第一行注释事为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释; 第二行注释市为了告诉Python解释器,按照UTF-8编码读取源代码,否则,在源代码中写的中文输出可能会有乱码。
PHPINFO
题目背景
phpinfo — 输出关于 PHP 配置的信息
输出 PHP 当前状态的大量信息,包含了 PHP 编译选项、启用的扩展、PHP 版本、服务器信息和环境变量(如果编译为一个模块的话)、PHP环境变量、操作系统版本信息、path 变量、配置选项的本地值和主值、HTTP 头和PHP授权信息(License)。
因为每个系统安装得有所不同,phpinfo() 常用于在系统上检查 配置设置和 预定义变量。
phpinfo() 同时是个很有价值的、包含所有 EGPCS(Environment, GET, POST, Cookie, Server) 数据的调试工具。
解答题目
点击“点击查看phpinfo”,进入如下界面:
随手ctrl+f
搜索一下flag:
突然发现了宝藏:
ctfhub{780dc5e53d1c76308084bec3}
> 注意别把空格复制了,会导致提交错误噢!
提交正确。
备份文件下载
网站源码
题解一:
先按他给的线索进行python脚本扫描。脚本如下:
#! /usr/bin/env python
# _*_ coding:utf-8 _*_
import requests
url="http://challenge-6a34ded4464be765.sandbox.ctfhub.com:10800/"
list1=['web', 'website', 'backup', 'back', 'www', 'wwwroot', 'temp']
list2=['tar', 'tar.gz', 'zip', 'rar']
for i in list1:
for j in list2:
url_f=url+i+"."+j
r=requests.get(url_f)
if(r.status_code == 200):
print(url_f)
扫出了一个名为http://challenge-6a34ded4464be765.sandbox.ctfhub.com:10800/www.zip
的文件
在网址栏输入得到一个文件:
打开flag文件:
用上面的网站去访问该文件就可以得到flag:
ctfhub{110539f8cc74728417c0e261}
提交即可!!!
题解二:
使用dirsearch
进行扫描.git
泄露
python3 dirsearch.py -u challenge-6a34ded4464be765.sandbox.ctfhub.com:10800 -e*
得到如上结果(我自己没有扫出来不知道是什么原因)
然后和上面操作一样就可以了。
题解三:
使用御剑后台扫描工具
扫描(本题中超时要设置为10s , 一般来说设置为3s即可)
得到文件,依上面步骤继续操作即可得到最终的flag
题解四:
使用burpsuite
根据字典进行子域名扫描,同样可得到上述文件及flag。
bak文件
背景
当开发人员在线上环境中对源代码进行了备份操作,并且将备份文件放在了 web 目录下,就会引起网站源码泄露。
题解一:
首先打开靶场,得到下列图片:
题目上说了是bak泄露了,就在地址栏后面接上index.php.bak
。出现一个下载文件,如图:
我这上面这个显示是因为我安装了autoCAD,这个软件也有bak文件,同样是备份文件,换个打开方式就可以了。
Capture the flag!
ctfhub{b583b93ab1b0531b80dee8bc}
题解二:
在cmder/cmd 利用 curl 也可以得到flag,且不用下载文件(强迫症狂喜!!!)
题解三:
不看题目,直接拿dirsearch
扫描。可以看到:
????what
不知道是网上的wp是怎么扫出来的,总之扫出来了就照着上面的做。(猜测可能是被ctfhub禁掉了)
vim缓存
题目背景
当vim异常退出时,都会生成一个用于备份缓冲区内容的swp临时文件,来记录了用户在非正常关闭vim编辑器之前未能及时保存的修改,用于文件恢复。
-
第一次产生的交换文件名为 .index.php.swp
-
再次意外退出后,将会产生名为 .index.php.swo 的交换文件
-
第三次产生的交换文件则为 .index.php.swn
和bak文件题一样,使用curl命令获取index.php.swp文件,得到flag
题解一:
打开环境,可以看到:
提示是vim缓存漏洞,可以尝试访问./index.php.swp,得到文件。
再使用vim -r
恢复文件。
vim -r index.php.swp
得到flag!
题解二:
尝试运行下列命令:
curl http://challenge-219f0974df40800e.sandbox.ctfhub.com:10800/.index.php.swp
按照提示输入--output -
同样可以得到flag!
.DS_Store
背景
.DS_Store 是 Mac OS 保存文件夹的自定义属性的隐藏文件。通过.DS_Store可以知道这个目录里面所有文件的清单。
题解一:
试着扫描一下!(没有扫描成功过,不知道为啥,可能是ctfhub改了以后不让扫!)
用Python-dsstore
打开文件DS_Store
在浏览器访问即可得到flag:
题解二:
下载得到的文件打开发现是一个二进制文件,编译得到字符串:
然后和上面一样就行。
题解三:
使用ds_store_exp
脚本来读取DS_Store文件也可以得到flag!
Usage: python ds_store_exp.py http://www.example.com/.DS_Store
我这边用的是win_server2012
,运行脚本得到:
进入目录:
Git泄露
Log
背景
当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞。请尝试使用BugScanTeam的GitHack完成本题
题解:
首先进入环境:
按照题目描述的是一个git泄露
,利用githack
进行进行文件恢复。
我尝试了BugScanTeam的GitHack
但是一直报错,可能是没有维护的原因?
补充:
这个脚本没有错是我的使用方式有错,这个脚本兼容的是
python2
的环境,所以改用成python2 GitHack.py xxx
即可。
所以改用lijiejie/GitHack,使用命令GitHack.py http://challenge-35c195fe89d8f778.sandbox.ctfhub.com:10800/.git/
进行扫描,结果:
我以为好了,打开文件一看:
麻了!
使用scrabble
工具进行操作
./scrabble http://challenge-d11e15df0759ddba.sandbox.ctfhub.com:10800/
使用git log
命令查询历史记录,当前版本为remove flag,于是使用git reset
命令进行版本切换,在目录下发现flag文件得到flag。
顺利解决得到flag,感谢《从0到1:ctfer成长之路》的推荐!
Stash
背景
stash可以把当前工作现场“保存”起来,等以后恢复现场后继续工作。
git stash list 查看保存的工作现场列表 git stash pop 恢复工作现场 git stash show 显示做了哪些改动 git stash show -p 显示第一个保存的工作现场的改动
题解
首先打开环境,还是老样子
先用GitHack
扫描恢复一下
python2 GitHack.py http://challenge-40545d1d900ad6a1.sandbox.ctfhub.com:10800/.git/
来到目录里的dist
目录,里面有扫描出来的结果,在终端内打开恢复。
- 根据题目的提示,使用
git stash list
命令查看保存的工作列表,发现有一个stash@{0}
的改动。 - 使用
git stash pop
命令恢复工作现场,在目录下给出有flag的txt文件,得到flag。 - 使用
git stash show -p
命令显示第一个保存的工作现场的改动,得到flag。(cat 7737280804297.txt
也可以)
Index
背景
当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞。
题解
用GitHack
进行恢复,直接可以发现文件下的flag
:
SVN泄露
背景:
当开发人员使用 SVN 进行版本控制,对站点自动部署。如果配置不当,可能会将.svn文件夹直接部署到线上环境。这就引起了 SVN 泄露漏洞。
SVN(subversion)
是源代码版本管理软件,造成SVN源代码漏洞的主要原因是管理员操作不规范。“在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源代码信息。但一些网站管理员在发布代码时,不愿意使用‘导出’功能,而是直接复制代码文件夹到WEB服务器上,这就使.svn隐藏文件夹被暴露于外网环境,黑客可以借助其中包含的用于版本信息追踪的‘entries’文件,逐步摸清站点结构。”(可以利用.svn/entries
文件,获取到服务器源码、svn服务器账号密码等信息)SVN产生的.svn目录下还包含了以.svn-base结尾的源代码文件副本(低版本SVN具体路径为text-base目录,高版本SVN为pristine目录),如果服务器没有对此类后缀做解析,黑客则可以直接获得文件源代码。
题解:
打开环境:
svn1.6及以前版本会在项目的每个文件夹下都生成一个
.svn
文件夹,里面包含了所有文件的备份,文件名为.svn/text-base/文件名.svn-base
。svn1.7及以后版本则只在项目根目录生成一个
.svn
文件夹,里面的pristine
文件夹里包含了整个项目的所有文件备份。
安装dvcs-ripper
git clone https://github.com/kost/dvcs-ripper
安装需要的perl
模块
sudo apt-get install perl libio-socket-ssl-perl libdbd-sqlite3-perl libclass-dbi-perl libio-all-lwp-perl
获取SVN
perl rip-svn.pl -v -u http://www.example.com/.svn/
使用dvcs-ripper
获取SVN
文件夹
进入.svn
文件,由于SVN中的pristine文件夹里包含了整个项目的所有文件备份,里面的文件很少,打开文件检查,很容易在第一个文件中找到flag
文件。
除了一个一个点,在命令行进行查找也是可行的,如下:
HG泄露
背景
当开发人员使用 Mercurial 进行版本控制,对站点自动部署。如果配置不当,可能会将.hg 文件夹直接部署到线上环境。这就引起了 hg 泄露漏洞。
题解
打开环境看到:
已知是.hg泄露
,则运行下列命令:
sudo perl rip-hg.pl -v -u http://challenge-5bd46808b5fa4ab3.sandbox.ctfhub.com:10800/.hg/
==-v 应该是显示详细的选项,最好顺带写上==
然后:
==执行过程有大量文件未找到,查看已旦拿到文件,进一步访问txt文件==
得到flag
!!!!