Web之浅谈xff伪造
XFF伪造XFF 伪造是指攻击者通过修改 HTTP 请求头中的X-Forwarded-For字段来欺骗服务器伪装自己的真实 IP 地址从而达到绕过访问限制或进行 SQL 注入等攻击的目的。以下是关于 XFF 伪造的原理、在 CTF 中的常见考点以及具体的利用方式。1. 什么是 XFF (X-Forwarded-For)在正常的网络通信中如果客户端直接连接服务器服务器可以通过 TCP 连接直接获取客户端的 IP。但是如果中间经过了HTTP 代理或负载均衡服务器看到的“来源 IP”其实是代理服务器的 IP而不是客户端的真实 IP。为了解决这个问题HTTP 协议引入了X-Forwarded-For头部。标准格式HTTPX-Forwarded-For: client, proxy1, proxy2作用用来记录从客户端开始经过每一个代理服务器的 IP 链路。问题所在X-Forwarded-For仅仅是一个 HTTP 头部字段。它是完全可以被用户控制和篡改的。如果后端服务器没有进行严格的验证直接信任并使用了这个字段里的值就会产生安全漏洞。2. CTF 中的常见利用场景在 CTF 比赛中XFF 伪造通常出现在以下几种场景中A. 伪造 IP 绕过访问限制 (最基础)这是最常见的签到题或前置关卡。场景网页显示“Only localhost can access” (只允许本地访问) 或 “Only admin IP 8.8.8.8 allowed”。原理后端代码可能使用了类似request.headers[X-Forwarded-For]来判断用户 IP而不是获取真实的 Socket IP。利用 Payload使用 Burp Suite 或 Python 脚本在请求头中添加HTTPX-Forwarded-For: 127.0.0.1或者题目要求的特定 IPHTTPX-Forwarded-For: 8.8.8.8B. SQL 注入 (Header 注入)场景很多后台系统会将用户的访问 IP 记录到数据库日志中。原理后端逻辑可能是这样的INSERT INTO login_log (ip, time) VALUES ($ip, NOW())。如果$ip直接取自 XFF 头且未经过滤攻击者就可以构造恶意 SQL 语句。利用 PayloadHTTPX-Forwarded-For: 127.0.0.1 OR 11# X-Forwarded-For: 127.0.0.1 AND (SELECT sleep(5))#如果页面有延时或报错说明存在注入。C. SSTI (服务端模板注入)场景某些基于 Python (Flask/Django) 或 Node.js 的应用会将用户的 IP 显示在页面上例如“Welcome, your IP is [User-IP]”。原理如果服务器直接将 XFF 的内容渲染到模板中且没有过滤可以利用模板引擎语法执行代码。利用 Payload (以 Flask Jinja2 为例)HTTPX-Forwarded-For: {{7*7}}如果回显变成Welcome, your IP is 49则说明存在 SSTI 漏洞接着可以尝试 RCE远程代码执行。3. 常见的“IP 伪造”头部全家桶有时候题目会过滤X-Forwarded-For或者后端使用的是其他类似的非标准头部。在 CTF 中如果 XFF 不起作用你需要尝试以下兄弟头部建议保存这个列表在 CTF 遇到 IP 限制时逐个尝试或放入 Intruder 爆破X-Forwarded-For(最常用)X-Client-IPClient-IPX-Real-IPX-Originating-IPX-Remote-IPX-Remote-AddrTrue-Client-IP(常见于 CDN)4. 实战演示 (如何操作)假设你在做一个 CTF 题目提示“必须来自 Google 内部网络访问”。工具Burp Suite (推荐) 或 Curl。步骤抓包使用 Burp Suite 拦截当前的 HTTP 请求。发送到 Repeater将请求发送到 Repeater 模块CtrlR。修改头部在 Headers 区域手动添加一行。HTTPGET /admin HTTP/1.1 Host: example.com X-Forwarded-For: 127.0.0.1 ...发送并观察点击 Send观察 Response。如果依然被拦截尝试将 IP 改为localhost或题目提示的特定网段或者尝试上面提到的其他头部如Client-IP。使用 Curl 命令行Bashcurl -H X-Forwarded-For: 127.0.0.1 http://target-ctf-site.com5. 进阶 Tip多层代理有些题目会模拟真实环境后端可能配置了反向代理如 Nginx。Nginx 默认配置下X-Forwarded-For的格式是客户端IP, 代理1 IP, 代理2 IP。如果服务器取的是最左边的 IP你直接伪造即可。 但如果服务器配置了校验或者你自己在多层代理之后你可能需要构造HTTPX-Forwarded-For: 127.0.0.1, 真实外网IP有时候通过混淆格式也能绕过简陋的 WAF。6、[CISCN2019 华东南赛区]Web11这题有很明显的提示是要伪造xff发现最下面有个build with smarty那么明显是利用模板注入漏洞ssti来获取flag。考点1、Smarty的XFF注入2、全部的PHP条件表达式和函数都可在{if}中使用smarty模板注入沙箱相对较弱不需要像jinjia2和flask一样在python中寻找基类和子类很多时候可以直接调用PHP危险函数3、xff伪造X-Forwarded-For:{7*7}发现漏洞存在此处有个操作细节在构造完xff后记得向下多换一行X-Forwarded-For:{if system(ls /)}{/if}拓展smarty的模板注入相对简单假如把模板换成了Twig、flask大致思路如下1TwigTwig 也是 PHP 系的但它比 Smarty 严谨得多。不能直接调system()。探测特征输入{{7*7}}得到49。常用 Payload 在较老版本中可以利用_self对象获取环境并注册过滤器。但在新版本中常用的方法是利用filter{# 简单的 RCE #} {{[cat /flag]|filter(system)}} {# 或者利用 registerUndefinedFilterCallback (取决于版本) #} {{_self.env.registerUndefinedFilterCallback(system)}}{{_self.env.getFilter(cat /flag)}}特点虽然比 Smarty 复杂一点但依然不需要像 Python 那样找基类。2flask探测特征输入{{7*7}}得到49输入{{7*7}}得到7777777Python 特性。常用 Payload 由于是在X-Forwarded-For中注入Payload 不能有空格有时需要转义常见的寻找路径如下{# 寻找 os.popen 执行命令 #} {{config.__class__.__init__.__globals__[os].popen(cat /flag).read()}} {# 如果 config 被过滤用 url_for #} {{url_for.__globals__[os].popen(cat /flag).read()}} {# 如果极其严格需要 __subclasses__ 遍历 #} {{.__class__.__mro__[1].__subclasses__()[索引值].__init__.__globals__[os].popen(ls).r总结在 CTF 中当你看到“IP 禁止访问”、“只允许本地访问”或者页面回显了你的 IP 地址时第一时间就应该想到XFF 伪造。测试绕过添加X-Forwarded-For: 127.0.0.1。测试注入添加或者是{{7*7}}测试 SQLi 或 SSTI。字典爆破尝试Client-IP等其他同类头部。

相关新闻

VCF 4.x/5.x/9.x 组件 Bundle ID 与 UUID 查询及下载教程

VCF 4.x/5.x/9.x 组件 Bundle ID 与 UUID 查询及下载教程

一、概述VMware Cloud Foundation(VCF)版本由多个组件构成,这些组件分为安装文件和补丁 / 升级文件两类。不同 VCF 版本中,组件的标识方式存在差异:VCF 4.x/5.x 版本中,每个组件包含两个标识符:UUID 和 Bundle ID(格式…

2026/7/5 13:29:19 阅读更多 →
草稿纸上的智慧——CoD的十八般武艺(下)

草稿纸上的智慧——CoD的十八般武艺(下)

上篇咱们聊了CoD是什么——就是让AI像人一样打草稿,用几个关键词就把问题想明白,不啰嗦不废话。 但你可能要问了:这玩意儿不就是让AI少说点话吗?有啥大不了的?嘿,别小看这张“草稿纸”。今天我就带你看看&a…

2026/7/5 16:04:06 阅读更多 →
混排涡扇发动机设计点循环计算程序:与F119发动机公开资料比较的代码注释详细规范

混排涡扇发动机设计点循环计算程序:与F119发动机公开资料比较的代码注释详细规范

航空发动机设计点循环计算程序,对象为混排涡扇发动机,计算结果与f119发动机的公开资料比较。 已有功能:画参数分析图以确定最优的热力循环参数;蒙特卡洛法做参数对发动机性能影响分析。 代码注释详细,书写规范航空发动…

2026/7/5 16:57:34 阅读更多 →

最新新闻

我们打工人用好 WorkBuddy 这 5 个实用技能,轻松工作提效

我们打工人用好 WorkBuddy 这 5 个实用技能,轻松工作提效

大家好,我是赛博李同学。腾讯的 WorkBuddy 功能进化的非常之快,俨然它已经成为我日常办公小助手了,真正的生产力工具!今天就分享5个我天天在用的技能。没什么高深的东西,就是些实打实能帮你把时间抠出来的小活儿。一、…

2026/7/6 8:11:23 阅读更多 →
借助生成式 AI 和压缩算法,仅用 500 字节构建世界地图!

借助生成式 AI 和压缩算法,仅用 500 字节构建世界地图!

【导语:2026 年 6 月 28 日消息,有人曾在 JS1k 竞赛中用不到 1000 字节构建世界地图,如今借助生成式 AI 和压缩算法,成功将地图数据压缩至不到 500 字节,引发关注。】从 1000 字节到挑战 500 字节10 多年前&#xff0c…

2026/7/6 8:11:23 阅读更多 →
C语言typedef的用法详解

C语言typedef的用法详解

前言:先用人话搞懂核心概念1. typedef 到底是干嘛的?typedef 是 C 语言关键字,作用:给已存在的数据类型起别名(绰号),不会创造新类型,只是给原有类型换一个好写、好理解的名字。把它…

2026/7/6 8:09:23 阅读更多 →
LangChain学习及应用(超详细)

LangChain学习及应用(超详细)

1. 引言:为什么需要 LangChain? 在人工智能,特别是大语言模型(LLM)飞速发展的今天,我们拥有了像 GPT、Claude、文心一言等强大的通用模型。然而,将这些模型直接应用到复杂的业务场景中&#xff…

2026/7/6 8:01:19 阅读更多 →
基于SSM实现的网上书城系统 基于SSM的宾馆信息管理系统 基于SSM实现的社团管理系统 基于SSM的超市进销存管理系统 基于SSM的在校生职业走向调查分析系统 基于SSM实现的员工管理系统

基于SSM实现的网上书城系统 基于SSM的宾馆信息管理系统 基于SSM实现的社团管理系统 基于SSM的超市进销存管理系统 基于SSM的在校生职业走向调查分析系统 基于SSM实现的员工管理系统

基于springbootvue的在线问卷调查管理系统 基于ssm的鲜花销售系统 基于ssm的外卖点餐订餐管理系统 基于springboot的个人博客系统 基于SSM的房屋租赁管理系统 项目合集 提取码: 32y6 更多资料汇总 提取码: dk3h

2026/7/6 7:57:17 阅读更多 →
类型断言和非空断言

类型断言和非空断言

类型断言类型断言 相当于告诉 TypeScript 编译器:"相信我,我知道这个值是什么类型"。它不会改变变量的实际值,只影响编译时的类型检查。as 语法 let length: number (value as string).length;处理联合类型interface Cat {name: s…

2026/7/6 7:57:17 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻