CTFHUB WEB WP
Web前置技能
HTTP协议
HTTP 协议一般指 HTTP(超文本传输协议)。
超文本传输协议(英语:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议,是因特网上应用最为广泛的一种网络传输协议,所有的 WWW 文件都必须遵守这个标准。
HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。
For more Information:
请求方式
打开题目环境如图:

该题目考察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

Cookie
打开题目环境提示:hello guest. only admin can get flag.
该题目考察Cookie欺骗、认证、伪造
使用Burp抓包,将Cookie处admin=0改为admin=1,即可得到flag


基础认证
该题目考察HTTP 基本认证
秒懂HTTP基本认证(Basic Authentication)
题目给出了基础认证的维基百科,根据百科内容可知:
认证时需传递一个base64之后的用户名和密码,格式为:用户名:密码,然后将其base64加密,放在Authorization: Basic之后
题目环境中,点击click之后提示输入用户名和密码,同时提示了用户名为admin

使用题目所提供的密码字典编写python脚本,将用户名admin和密码组合之后base64加密
另存为新的字典
也可使用Burp中的有效负载处理功能直接进行Base64编码
1 | |
找到编码后的用户名密码位置:

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工具
1 | |
此工具需要使用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 | |

使用GitHack工具克隆目标源代码到本地
1 | |
执行git log查看commit历史记录 可以看到当前版本是remove flag,我们要的flag在add flag中

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

Stash
Stash:能够将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录。
使用dirsearch扫描网站目录,发现git泄露.git/refs/stash ,在git中是暂存区的意思

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

查看 .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 | |

使用 dvcs-ripper 工具中的 rip-svn.pl 脚本进行 clone.
1 | |
此处perl可能会报错:

处理方法:
install_driver(SQLite) failed: Can’t locate DBD/SQLite.pm_ruokeqx-CSDN博客
1 | |
重新执行rip-svn.pl 脚本无报错

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

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

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

使用 dvcs-ripper 工具中的 rip-svn.pl 脚本进行 clone.
1 | |
查看.hg/store/fncache,得到flag 的文件名为flag_264906614.txt,直接访问即可得 flag

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

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

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