CTFHUB WEB WP

Web前置技能

HTTP协议

HTTP 协议一般指 HTTP(超文本传输协议)。
超文本传输协议(英语:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议,是因特网上应用最为广泛的一种网络传输协议,所有的 WWW 文件都必须遵守这个标准。
HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。

For more Information:

HTTP 教程

请求方式

打开题目环境如图:

该题目考察HTTP请求方法

HTTP九种请求方法:
GET、POST 、HEAD、OPTIONS、PUT、PATCH、DELETE、TRACE、CONNECT

根据题目要求应使用CTFHUB方法替换GET方法重新进行HTTP请求

使用Burp抓包替换请求方式重新发包

便可得到 flag:

302重定向

打开题目环境如图:

该题目考察HTTP状态码

状态码3xx,代表重定向

分类 分类描述
1xx 信息,服务器收到请求,需要请求者继续执行操作
2xx 成功,操作被成功接收并处理
3xx 重定向,需要进一步的操作以完成请求
4xx 客户端错误,请求包含语法错误或无法完成请求
5xx 服务器错误,服务器在处理请求的过程中发生了错误

首页有一个链接,直接使用burp抓包,发送到Repeater,得到flag

打开题目环境提示:hello guest. only admin can get flag.

该题目考察Cookie欺骗、认证、伪造

cookie_百度百科

使用Burp抓包,将Cookie处admin=0改为admin=1,即可得到flag

基础认证

该题目考察HTTP 基本认证

秒懂HTTP基本认证(Basic Authentication)

题目给出了基础认证的维基百科,根据百科内容可知:

认证时需传递一个base64之后的用户名和密码,格式为:用户名:密码,然后将其base64加密,放在Authorization: Basic之后

题目环境中,点击click之后提示输入用户名和密码,同时提示了用户名为admin

使用题目所提供的密码字典编写python脚本,将用户名admin和密码组合之后base64加密

另存为新的字典

也可使用Burp中的有效负载处理功能直接进行Base64编码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import base64
f=open('10_million_password_list_top_100.txt','r')
spring=open('test123456.txt','w')
lines=f.readlines()
for line in lines:
Authorization="admin:"+line.strip('\n')
authen = Authorization.encode()
Authorizationbs64=base64.b64encode(authen)
print(Authorizationbs64)
authde = Authorizationbs64.decode()
spring.write(authde)
spring.write("\n")
f.close()
spring.close()

找到编码后的用户名密码位置:

base64 解码得到格式:[用户名]:[密码]

载入题目所给字典,同时添加前缀并进行 base64 编码:

爆破得到密码:

解码得:

输入用户名密码得到 flag:

响应包源代码

该题目考察HTTP响应包源代码查看

直接查看源代码,得到 flag

信息泄露

目录遍历

依次打开目录,发现flag位于/flag_in_here/4/1/falg.txt中,这个位置每次启动题目都会随机变动

PHPINFO

进入phpinfo页面直接查找得flag

备份文件下载

网站源码

使用备份文件扫描器进行扫描,得到备份文件

下载备份文件解压,并未得到flag

将txt文件名置于网址路径后,得到flag

bak文件

根据提示找index.php.bak备份文件

修改扩展名为php得到flag

Vim缓存

该题目考察Vim缓存文件

在使用vim时会创建临时缓存文件,关闭vim时缓存文件则会被删除,当vim异常退出后,

因为未处理缓存文件,导致可以通过缓存文件恢复原始文件内容 以 index.php 为例:第一次产生的交换文件名为 .index.php.swp 再次意外退出后,将会产生名为 .index.php.swo 的交换文件 第三次产生的交换文件则为 .index.php.swn

打开首页,题目提示flag位于index.php

因为这里已经告诉我们是index.php了,所以其意外退出而保留的临时文件是.index.php.swp

下载得到后使用vim -r index.php命令恢复swp缓存文件,得到flag

.DS_Store

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

直接下载.DS_Store备份文件

解析flag文件需要使用ds_store_exp工具

.DS_Store文件泄漏利用脚本

1
2
3
# 安装:git clone https://github.com/lijiejie/ds_store_exp.git
pip install -r requirements.txt
python ds_store_exp.py http://www.example.com/.DS_Store

此工具需要使用python2环境

使用此工具解析得到flag

Git泄露

当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞。工具:**GitHack**

Git常见的利用:

①.git/index中会缓存git add的文件,这里在没有commit的情况下,也是存在的

②.git/refs/heads/master 记录了master的commit的hash,由此可以解析出这个commit的所有文件

③.git/logs/HEAD其中存储了git的log信息,可以找到历史的commit项

④.git/refs/stash 工作进度的临时保存

⑤.git/info/packs packs文件提取恢复

Log

当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞。请尝试使用BugScanTeam的GitHack完成本题

使用dirsearch扫描网站目录,发现git泄漏.git/logs/HEAD,在git中是存储历史记录的

1
dirsearch -u "http://challenge-63d3205bb4362964.sandbox.ctfhub.com:10800" -e *

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

1
python2 GitHack.py http://challenge-63d3205bb4362964.sandbox.ctfhub.com:10800/.git/

执行git log查看commit历史记录 可以看到当前版本是remove flag,我们要的flag在add flag中

使用git diff直接与 add flag (ee6a2a1) 这次提交进行差异比对,得到flag

Stash

Stash:能够将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录。

使用dirsearch扫描网站目录,发现git泄露.git/refs/stash ,在git中是暂存区的意思

使用GitHack克隆目标源代码到本地

1
python2 GitHack.py http://challenge-2932b45db603b444.sandbox.ctfhub.com:10800/.git/

查看 .git/refs/stash 找到 stash 对应的 hash,使用git diff b59e90 即可看到 flag

Index

使用GitHack克隆目标源代码到本地,因为题目是index,所以考虑git的index暂存区文件,打开克隆好的文件夹发现flag

SVN泄漏

当开发人员使用 SVN 进行版本控制,对站点自动部署。如果配置不当,可能会将.svn文件夹直接部署到线上环境。这就引起了 SVN 泄露漏洞。工具:**dvcs-ripper**

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

1
dirsearch -u "http://challenge-a285e11e3d6dd238.sandbox.ctfhub.com:10800/" -e *

使用 dvcs-ripper 工具中的 rip-svn.pl 脚本进行 clone.

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

此处perl可能会报错:

处理方法:

install_driver(SQLite) failed: Can’t locate DBD/SQLite.pm_ruokeqx-CSDN博客

1
2
3
perl -MCPAN -e shell
install DBD::SQLite
exit

重新执行rip-svn.pl 脚本无报错

进入.svn/pristine/文件夹下, 在bf文件夹下发现xxx.svn-base源码文件,提示flag在旧版本代码中

切换到62/目录中,得到flag

HG泄漏

当开发人员使用 Mercurial 进行版本控制,对站点自动部署。如果配置不当,可能会将.hg 文件夹直接部署到线上环境。这就引起了 hg 泄露漏洞。**dvcs-ripper**

使用dirsearch扫描发现有 .hg/ 目录,确认是 .hg 泄露。

1
dirsearch -u "http://challenge-f5db57e6c27d3421.sandbox.ctfhub.com:10800/" -e *

使用 dvcs-ripper 工具中的 rip-svn.pl 脚本进行 clone.

1
perl rip-hg.pl -v -u http://challenge-f5db57e6c27d3421.sandbox.ctfhub.com:10800/.hg/

查看.hg/store/fncache,得到flag 的文件名为flag_264906614.txt,直接访问即可得 flag

密码口令

弱口令

打开链接是一个后台登录页面,猜测用户名为admin,使用Intruder模块进行密码爆破

得到密码为admin,登录得到flag

默认口令

打开页面后,发现是亿邮邮件网关,经百度查询**亿邮邮件网关系统默认口令**,直接查到账户和密码,登录即可得到flag

参考


CTFHUB WEB WP
https://blog.tddt.cc/posts/3.CTFHUB_WEB_WP.html
作者
TechPANG
发布于
2024年3月27日
许可协议