SSRF 编码与解析绕过题总结

记录通过非标准 localhost 表示和双重 URL 编码绕过 SSRF 黑名单的分析思路。

  • #CTF
  • #SSRF
  • #URL 编码
  • #解析差异

一、题目核心

目标是通过 SSRF 功能访问:

http://localhost/admin

但 /admin 存在仅允许本机访问的限制,因此需要让服务器自己去请求 localhost/admin。

二、绕过思路

localhost 和 admin 均被加入了黑名单。

1. 绕过 localhost

127.1

某些解析器会把它解析为 127.0.0.1。

2. 绕过 admin

使用双重 URL 编码,例如:

admin → %2561%2564%256d%2569%256e

第一层解码得到:

%61%64%6d%69%6e

后续再次解码后才得到:

admin

三、核心问题

过滤阶段和最终执行阶段的解析结果不一致:过滤器看到的可能是编码后的字符串,而真正发起请求前,URL 组件又进行了再次解码。

四、思维发散

以后遇到以下类型的题目,都可以思考:过滤器看到的内容,和最终执行或解析的内容是不是同一个东西?

  • SSRF
  • XSS
  • SQL 注入
  • 路径穿越
  • 文件包含
  • URL 跳转

一句话笔记

SSRF 绕过常利用“解析差异”:通过双重 URL 编码改变不同阶段看到的内容,或通过 127.1 等非标准 IP 表示绕过字符串/IP 黑名单,最终让后端解析到真正的 127.0.0.1。

复盘提示

分析这类题目时,建议分别记录输入经过的每一层:黑名单检查、URL 解码、主机名解析和最终 HTTP 请求。只有确认每一层的处理顺序,才能判断绕过是否成立。