文章背景图

第二章 第三节 攻防博弈,破防与坚守

2026-04-08
56
-
- 分钟
|

第二场胜利的余温尚未散去,终端屏幕上 “胜场:2” 的提示还在闪烁,下一场匹配的邀请便骤然弹出。

【对手匹配成功,ID:网安猎手】

一行行介绍文字映入眼帘,林野的指尖微微一顿,眼神变得凝重。“网安猎手,新世界东部区域 CTF 赛事亚军,深耕 Web 安全防御领域 5 年,擅长搭建多层防火墙体系,精通 SQL 注入拦截、WAF 绕过技巧,以‘铜墙铁壁’著称。”

Web 安全、防御、WAF 绕过…… 这些词汇在新世界听起来,仿佛是天方夜谭。在这个技术倒退一百万倍的时代,大多数人连最基础的 SQL 语句都写不明白,更别提什么防火墙、WAF(Web 应用防火墙)了。这位 “亚军” 的出现,显然意味着这场比赛不再是单方面的碾压,而是一场真正的攻防博弈。

林野深吸一口气,压下心中的波澜,目光聚焦在系统弹出的本场规则上:【本场比赛:靶机为 Web 服务架构,需通过 SQL 注入漏洞获取后台管理员权限;获取权限后,需持续守护权限 5 分钟,期间需抵御对手的所有干扰攻击(包括但不限于端口轰炸、文件篡改、权限驱逐),成功守护 5 分钟者获胜】。

SQL 注入?Web 架构?防御与反破解?

林野的心脏猛地一跳。这正是他最熟悉,也最能拉开技术差距的领域。在旧世界的 CTF 赛场上,SQL 注入是 Web 题目的常客,而他,正是其中的佼佼者。

“终于到了我的主场。” 林野的嘴角勾起一抹自信的弧度,但随即又收敛起来,取而代之的是一丝警惕。“对手是市级亚军,擅长防御,肯定做足了功课。这场不能掉以轻心,攻防转换,每一步都要算到。”

他迅速连接加密 U 盘,唤醒 AI “破界”,淡蓝色的界面在屏幕角落亮起,【系统就绪,核心模块:Web 漏洞扫描、SQL 注入检测、防火墙穿透、实时防御】。

与此同时,聊天框中传来了【网安猎手】的消息,语气沉稳,带着一种久经沙场的从容,与前两位对手的张扬截然不同:“旧网遗民,前两场赢得漂亮,看来你确实有点东西。但 Web 不是 Linux,不是靠蛮力就能搞定的。我布下的防火墙和 WAF,不是那么容易突破的。祝你好运。”

林野没有回复,只是盯着屏幕上的比赛倒计时。他知道,一场恶战,在所难免。

倒计时归零,比赛正式开始。

眼前的界面是一个简陋的 Web 登录页面,只有一个账号输入框和密码输入框,下方标注着 “管理员后台登录”。与前两场不同,没有靶机 IP,没有命令行,一切都在浏览器中进行。

林野没有急于输入账号密码,而是先让 “破界” 对整个页面进行一次全面的 Web 漏洞扫描。

“首先,我得搞清楚这个网站的底层逻辑。” 林野的手指在键盘上轻点,向 “破界” 发送指令:【启动 Web 深度扫描,分析页面源码结构,检测数据库交互方式,重点定位 SQL 注入点,同时识别防火墙 / WAF 特征】。

“破界” 的扫描速度依旧飞快,屏幕上飞快地滚动着代码和数据包信息。很快,一份详细的分析报告弹出:

【目标分析完成】

  1. 页面源码:采用 PHP 语言编写,后端连接 MySQL 数据库。

  2. 登录逻辑:用户输入账号密码,页面通过 GET 参数将账号(username)和密码(password)传递到后台login.php文件进行验证,SQL 语句为:SELECT * FROM admins WHERE username='$username' AND password='$password'

  3. 核心防御:对手已在login.php文件中添加了基础 WAF(Web 应用防火墙)规则,对输入的usernamepassword参数进行了关键词过滤,拦截了UNIONSELECTFROMWHERE等 SQL 关键字。

  4. 潜在漏洞:尽管有 WAF,但代码中存在一个后门权限漏洞:在页面的隐藏参数?action=backup中,存在一个未授权的数据库备份接口,该接口未做任何权限验证和过滤,可直接访问并获取数据库备份文件。

看到这份报告,林野的眼神亮了一下,但随即又皱起眉头。

“有 WAF,有过滤,想直接用 UNION 联合查询注入拿数据,门都没有。对手很懂行,把最基础的注入点都堵死了。”

他看向聊天框,【网安猎手】已经开始行动了。对方的屏幕上,清晰地显示着他正在对靶机的 80 端口进行持续的端口扫描,同时,一行行防御代码正在被快速写入后台文件。

林野知道,【网安猎手】此刻做的,是主动防御。他正在加固 Web 应用的安全配置,比如:

  1. 开启magic_quotes_gpc:这是一个 PHP 配置项,会自动对输入的单引号、双引号等特殊字符进行转义(在字符前加反斜杠\),使得攻击者无法闭合 SQL 语句中的引号,是最基础的防注入手段。

  2. 添加自定义 WAF 规则:对手编写了一个简单的 PHP 脚本,在login.php的参数接收处,使用正则表达式匹配UNIONSELECTDROP等危险关键词,一旦匹配到,立即终止请求并返回错误页面。

“铜墙铁壁,果然名不虚传。” 林野低声自语,指尖在鼠标上轻轻敲击,大脑飞速运转。

突破防线:SQL 注入的巧劲与 sqlmap 的妙用

直接注入的路被堵死了,林野必须另辟蹊径。他的目光落在了分析报告中提到的后门权限漏洞上 ——?action=backup

“明面上的登录点防守严密,但这个隐藏的备份接口,显然是对手的疏忽。或者说,他以为这个接口足够隐蔽,不需要防护。这就是突破口。”

他立刻向 “破界” 下达指令:【访问?action=backup接口,尝试获取数据库备份文件,分析文件内容,寻找管理员账号密码或更多漏洞线索】

这个?action=backup接口,本质上是一个未授权访问漏洞。它的设计初衷可能是管理员用于定期备份数据库,但代码中没有验证当前访问者是否为管理员(比如没有检查 Session 或 Cookie),也没有对访问 IP 进行限制。攻击者可以直接通过 URL 访问该接口,触发数据库备份操作,甚至直接下载已生成的备份文件(通常是.sql格式)。

几乎在指令发出的瞬间,“破界” 就完成了访问。屏幕上弹出一个下载提示,一个名为admin_backup_20260408.sql的文件被保存到了本地。

林野立刻用 “破界” 打开了这个 SQL 备份文件。文件内容一目了然,是标准的 MySQL 导出语句。

【文件内容分析】

CREATE TABLE admins (idint(11) NOT NULL AUTO_INCREMENT,usernamevarchar(50) NOT NULL,password varchar(32) NOT NULL, PRIMARY KEY (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO admins VALUES (1, 'admin', 'e10adc3949ba59abbe56e057f20f883e');

“MD5 加密的密码!” 林野的目光落在了密码字段上,e10adc3949ba59abbe56e057f20f883e

“又是 MD5,和第二场一样。但这次我不需要破解它,我有更直接的方法。”

他没有选择去彩虹表匹配这个密码,因为他的目标是获取管理员权限,而不是登录后台。他需要的是一个能直接绕过 WAF、直接执行 SQL 语句的方法。

他的思绪回到了 SQL 注入本身。既然 WAF 拦截了关键字,那如何绕过?

技术解析:

在旧世界的 CTF 比赛中,绕过 WAF 过滤是必备技能。常用的方法有很多:

  1. 大小写混淆:将SELECT改为SeLeCt,WAF 通常只匹配小写。

  2. 注释绕过:在关键字中间插入注释符号,如SE/**/LECT

  3. 等价函数替换:将UNION替换为UNION ALL,或将AND替换为&&

  4. 编码绕过:对关键字进行 URL 编码、Base64 编码等。

但这次,林野有更强大的武器 ——sqlmap

“对了,用 sqlmap。这是旧世界最强大的自动化 SQL 注入工具,它内置了海量的 WAF 绕过指纹和绕过脚本。在这个连 WAF 基础都不懂的新世界,它就是降维打击。”

他立刻让 “破界” 准备好 sqlmap,开始对登录页面的username参数进行注入测试。

技术解析:

sqlmap 的核心原理是基于不同的注入类型(基于布尔的盲注、基于时间的盲注、联合查询注入等),通过构造特定的 SQL 语句,发送请求,然后根据服务器的响应结果(页面内容、响应时间、错误信息)来获取数据库信息

但面对对手的 WAF,直接使用 sqlmap 的默认参数肯定会被拦截。林野需要手动指定参数,告诉 sqlmap 如何绕过。

他向 “破界” 输入了一条精心构造的 sqlmap 命令:

sqlmap -u "http://target/login.php?username=test&password=test" --dbs --risk 3 --level 5 --tamper="space2comment,randomcase,equaltolike"

命令解析:

  • -u:指定目标 URL。

  • --dbs:爆破目标数据库名。

  • --risk 3 --level 5:设置最高的测试风险和等级,会进行全面的测试,包括更多的注入类型和参数。

  • --tamper:指定绕过脚本。这里使用了三个脚本:

    1. space2comment:将空格替换为 SQL 注释/**/,绕过对空格的过滤。

    2. randomcase:将 SQL 关键字随机大小写,绕过大小写过滤。

    3. equaltolike:将等号=替换为模糊匹配符LIKE,绕过对等号的过滤。

这串命令,在新世界的技术人员眼中,无异于天书。他们甚至不知道 sqlmap 这个工具的存在,更别提理解这些参数的含义了。

命令发出,sqlmap 开始工作。屏幕上飞快地滚动着测试信息,一行行请求包被发送,又被接收。

与此同时,聊天框中,【网安猎手】的消息弹出,语气中带着一丝得意和疑惑:“你还在尝试登录?看来你没什么进展。我的 WAF 不是摆设。”

林野没有回复,全神贯注地盯着屏幕。

“他在攻击我。”

林野看到,自己的终端 IP 正在被【网安猎手】进行端口轰炸。大量的数据包从对手的 IP 发送到林野的终端,试图消耗他的带宽,或者利用系统端口漏洞进行攻击。

“破界,启动自动防御模式,拦截所有来自对手 IP 的异常数据包。” 林野迅速下达指令。

淡蓝色的防御界面瞬间亮起,【防御系统已启动,拦截到 127 次来自对手 IP 的 TCP SYN 洪水攻击,攻击已被成功抵御,无数据包进入系统】。

林野松了口气,继续关注 sqlmap 的进度。

技术解析:

对手的端口轰炸,也叫SYN 洪水攻击,是一种简单的拒绝服务攻击(DoS)。它通过向目标发送大量的 TCP 连接请求(SYN 包),使得目标系统的连接资源被耗尽,无法处理正常请求。

但林野的 “破界” AI 内置了基础的防火墙和入侵防御系统(IDS),可以识别并拦截这种简单的攻击。这正是 AI 辅助的优势所在。

时间一分一秒过去。sqlmap 的测试仍在继续,每一次请求都小心翼翼地绕过了 WAF 的过滤。

突然,屏幕上弹出一条 sqlmap 的提示:

[11:23:45] [INFO] testing MySQL for user-defined function 'sys_exec()'

[11:23:47] [INFO] confirmed MySQL user-defined function 'sys_exec()' is present

[11:23:48] [INFO] testing for SQL shell access

[11:23:50] [SUCCESS] SQL shell access established

成功了!

林野的眼中闪过一丝狂喜。sqlmap 不仅找到了注入点,还通过 UDF(用户自定义函数)提权,直接获取了服务器的SQL Shell权限。这意味着,他可以在服务器上直接执行任意系统命令!

技术解析:

DF 提权是一种高级的 SQL 注入攻击手段。MySQL 支持通过安装自定义的 C/C++ 编写的函数来扩展其功能。如果攻击者能够将一个恶意的 UDF 库文件上传到服务器的插件目录,并通过 SQL 语句创建对应的函数,就可以利用这个函数在服务器上执行任意系统命令(如system()exec()),从而完全控制服务器。

林野没有丝毫犹豫,立刻通过 sqlmap 的 SQL Shell,执行了一条命令:

sqlmap -u "http://target/login.php?username=test&password=test" --os-cmd="whoami"

很快,结果返回:

[11:25:10] [INFO] executing command: whoami

[11:25:12] [OUTPUT] root

系统权限:root!

林野长舒一口气,指尖从键盘上移开,靠在椅背上,长长地呼了一口气。

“搞定了。root 权限,整个服务器都是我的了。接下来,就是守住这 5 分钟。”

他立刻让 “破界” 接管服务器的防御。【破界】迅速在后台部署了更严密的访问控制规则,封禁了【网安猎手】的 IP,同时删除了所有可能被对手利用的临时文件和日志。

聊天框中,【网安猎手】的消息越来越频繁,充满了焦虑和愤怒:

“你到底做了什么?为什么我的攻击对你无效?”

“我的 WAF 怎么会被绕过?这不可能!”

“快,把权限还给我!”

林野看着这些消息,嘴角勾起一抹淡淡的笑意。他没有回复,只是静静地看着屏幕上的倒计时。

10 分钟... 3 分钟... 1 分钟...

每一秒,都代表着一次成功的防御。【网安猎手】发动了一轮又一轮的攻击:尝试修改网页内容、尝试上传恶意文件、尝试利用数据库漏洞提权…… 但所有的攻击,都被【破界】一一拦截。

林野的内心异常平静。他知道,这场比赛,从他找到那个隐藏的备份接口开始,就已经赢了一半。而后面的攻防,不过是 AI 实力的展现。

倒计时归零!

终端屏幕上,弹出了最终的胜利提示:

【恭喜!您已成功获取靶机 root 权限,并成功守护权限 5 分钟!比赛获胜!】

【当前胜场:3 场!】

【您已成功获得线下赛入场资格!线下赛将于 3 日后开启,请留意赛事通知!】

林野看着屏幕上那行耀眼的 “线下赛入场资格”,心中的一块巨石终于落地。

“三战三捷,终于拿到了资格。” 接下龙等待他的又会是什么挑战呢......

评论交流
6

文章目录