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