CtfShow Web 入门挑战解析 (21-28)
Web21:Basic Auth 自定义迭代器爆破
抓包后看到 Authorization 头里是 Base64 编码的用户名和密码。这种场景下,Burp Suite 的 Intruder 模块配合 Custom Iterator 能灵活生成凭证组合。
1. 选中 Payload
在 Burp 的 Intruder 界面选中包含认证信息的请求部分。
2. 设置 Payloads
Payload Type 选择 Custom Iterator,设置 Position 为 1、2、3,分别对应用户名和密码字段。
3. 处理逻辑
在 Payload Processing 中取消 Base64 Encode 选项,因为我们在请求头里已经处理好了格式,避免重复编码。
4. 执行爆破
开始攻击,观察回包长度差异即可定位正确密码并获取 Flag。
Web22:域名变更提示
题目提示域名更新后原地址失效。如果无法访问旧链接,直接尝试提交提示中的 Flag。
Web23:MD5 字符串逻辑漏洞
源码中有一段对 MD5 值的特定位置字符校验。我们需要构造一个 Token,使其 MD5 哈希值满足特定索引位置的字符相等且数值运算成立。 这里写个脚本暴力枚举比较稳妥。
import hashlib
import itertools
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
for length in range(1, 4):
for combo in itertools.product(chars, repeat=length):
token = "".join(combo)
md5_str = hashlib.md5(token.encode('utf-8')).hexdigest()
c1 = md5_str[1]
c14 = md5_str[14]
c17 = md5_str[17]
c31 = md5_str[31]
if c1 != c14 or c14 != c17:
continue
try:
x1 = int(c1)
x2 = int(c14)
x3 = int(c17)
y = int(c31)
if x1 == 0:
((x1 + x2 + x3) / x1) == y:
()
ValueError:

