CTFShow Web 入门爆破题(web21 -web28) WriteUp

以下是 CTFShow Web 入门爆破题(web21 到 web28)的 WriteUp,总体属于爆破类(暴力破解)练习,思路一般是绕过验证码、爆破用户名/密码或某些参数:


✅ Web21:爆破登录(简单)

题目提示: 账号:admin,爆破密码。

思路:

  • 页面只有一个登录表单,无验证码。

  • 用户名固定为 admin

  • 使用 Burp Suite Intruder 或者 Python 脚本进行密码字典爆破。

Payload 示例:

import requests

url = 'http:///web21/'
for password in open('dict.txt'):
    password = password.strip()
    r = requests.post(url, data={'username': 'admin', 'password': password})
    if 'flag' in r.text.lower():
        print(f"[+] Password found: {password}")
        print(r.text)
        break

✅ Web22:爆破用户名

题目提示: 爆破正确用户名和密码。

思路:

  • 同样是登录页面,但提示不一样:用户名未知。

  • 使用用户名+密码字典爆破组合。

技巧:

  • 错误提示可能不同,比如“用户名不存在”和“密码错误”。

  • 利用响应差异来枚举有效用户名。

步骤:

  1. 枚举用户名,判断响应不同。

  2. 找到有效用户名后再暴力破解密码。


✅ Web23:验证码绕过

题目提示: 有验证码,尝试绕过。

思路:

  • 表单里多了验证码字段。

  • 检查验证码是否真正校验?是否可以不提交或任意值?

  • 或者验证码只对第一步生效,尝试使用 Cookie/session 绕过。

常见绕过方式:

  • 验证码值固定或为空也能通过。

  • 多次请求使用相同验证码。

  • 验证码只校验一次(验证码逻辑和登录逻辑分开)。


✅ Web24:验证码伪装

题目提示: 验证码图片其实是伪造的?

思路:

  • 验证码图片是静态图片,或者内容固定。

  • 抓包后观察验证码请求接口,看返回的是不是一个固定值。

做法:

  • 抓验证码接口 /code.php 或类似的路径,直接返回验证码值。

  • 先请求验证码接口拿值,再提交登录表单。


✅ Web25:UA绕过或Referer控制

提示暗示: 有 User-Agent 检测或 Referer 验证。

做法:

  • 抓包观察是否某些请求返回403。

  • 修改请求头如 User-Agent, Referer,尝试绕过检查。

  • 有时必须带上特定值才给正常响应。


✅ Web26:时间延迟逻辑爆破

提示: 登录接口有时间差异。

思路:

  • 正确用户名或密码会导致响应延迟(如sleep注入的思路)。

  • 用 time.time() 比较响应时间,找出有效值。

Python 示例:

import requests, time

for user in open('users.txt'):
    user = user.strip()
    start = time.time()
    r = requests.post('http:///web26/', data={'username': user, 'password': '123'})
    end = time.time()
    if end - start > 1:
        print("可能的用户名:", user)

✅ Web27:多因素组合绕过

提示: 多参数组合校验。

分析:

  • 除了账号密码外,可能还有 token、captcha、timestamp 等参数。

  • 某些参数其实并不验证,可以尝试绕过。

  • 或者这些值是 predictable,比如 timestamp 是当前时间戳。


✅ Web28:爆破限制绕过(频率控制)

提示: 爆破尝试被限制,需要绕过频率控制。

常用绕过方式:

  • 修改 User-Agent、IP(如使用X-Forwarded-For头)。

  • 分批爆破、延迟发送请求。

  • 或使用代理池进行绕过。

headers = {'X-Forwarded-For': '127.0.0.{}.{}'.format(random.randint(1,255), random.randint(1,255))}

如果你想要每一题更详细的脚本或抓包演示,也可以告诉我,我来帮你生成或补充。需要继续 web29+ 吗?

你可能感兴趣的:(ctfshow,ctf)