CTF AWD 靶机攻防核心手册 —— 漏洞利用、封堵技巧及防护脚本合集

CTF AWD 靶机攻防核心手册 —— 漏洞利用、封堵技巧及防护脚本合集
28.7的博客CTF 比赛靶机及攻防操作指南
一、靶机与访问地址
(一)裁判/观赛专用地址
| 访问地址 | 功能注释 |
|---|---|
192.168.87.199:8080/flag_file.php?token=teamX(自己队伍编号)&flag=flag{XXX} |
提交 Flag 专用地址 注意:攻击其他队伍后提交,需替换 teamX 为自身队伍编号(如 Team1 填 team1),flag{XXX} 为目标队伍的 Flag,禁止攻击本队 |
192.168.87.199:8080/score.txt |
实时查看各队伍攻击得分排行榜 |
192.168.87.199:8080/result.txt |
查看详细攻击行为日志(含攻击方、目标、时间及结果) |
(二)选手靶机地址(2支队伍专属)
| 访问地址 | 用途说明 | 登录凭证 |
|---|---|---|
http://192.168.87.199:880x(x=1-2) |
Web 业务靶机(队伍1→8801,队伍2→8802) | 无(直接访问) |
ssh ctf@192.168.87.199 -p220x(x=1-2) |
终端登录(队伍1→2201,队伍2→2202) | 用户名:ctf,密码见下方查询地址 |
(三)辅助查看地址
- 队伍终端密码查询:
- 实时得分面板:
二、核心攻防技巧
(一)SQL 万能密码利用
用于绕过 Web 登录认证的高频技巧,核心原理是构造恶意账号/密码注入SQL查询逻辑:
- 注入示例:账号填
admin' or '1'='1,密码任意 - 成功绕过登录后的权限访问
(二)命令执行漏洞利用
通过 Web 输入点注入系统命令,获取靶机权限或敏感信息:
- 测试示例:在输入框提交
ls /(列出根目录文件)、cat /flag(读取Flag文件)
(三)终端交互优化命令
通过 SSH 登录后,默认终端可能功能不全,执行以下命令可获取完整 bash 环境(支持命令补全、上下箭头切换历史):
1 | # 生成完整交互式bash终端 |
三、代码审计与漏洞封堵
(一)命令执行漏洞:/var/www/html/footer.php
漏洞描述
接收 POST 参数 shell 后直接调用 system() 执行系统命令,无任何过滤逻辑,攻击者可注入任意命令(高危漏洞)。
漏洞代码(关键片段)
1 |
|
漏洞测试效果
- 注入
whoami查看当前运行用户 - 注入
find / -name "flag*"搜索Flag文件
封堵建议(优先级:高)
- 彻底修复:直接删除
system($shell);及相关命令执行逻辑(非必要功能); - 兼容修复(若需保留功能):仅允许白名单命令(如
ls、pwd),示例代码:1
2
3
4$allow_commands = ['ls', 'pwd', 'date']; // 白名单命令
if (in_array($shell, $allow_commands)) {
system($shell);
}
(二)代码注入后门:/var/www/html/index.php
漏洞描述
通过 $_REQUEST['aa'] 接收任意用户输入,直接传入 eval() 执行PHP代码,属于无条件后门(攻击者可执行任意操作)。
漏洞代码(关键片段)
1 |
|
漏洞测试效果
注入 aa=phpinfo(); 查看靶机PHP环境信息
封堵建议(优先级:紧急)
- 直接删除
@eval($_REQUEST['aa']);后门代码; - 全局搜索项目目录,检查是否存在其他
eval()/assert()注入逻辑。
(三)命令执行后门:/var/www/html/admin/header.php
漏洞描述
接收 GET 参数 p,通过 exec() 执行系统命令并输出结果,攻击者可通过URL注入命令(高危后门)。
漏洞代码(关键片段)
1 |
|
漏洞测试效果
通过URL注入 p=cat /etc/passwd 读取用户列表
封堵建议(优先级:紧急)
- 删除
exec($p)及命令输出相关代码; - 若需保留
p参数(如页面跳转),限制参数长度(如≤10字符)并过滤特殊字符(;、|、&等)。
四、文件上传漏洞:/var/www/html/admin/upload.php
漏洞描述
上传功能未校验文件类型(MIME)、后缀名(如 .php),攻击者可直接上传PHP后门脚本,获取持久控制权限。
漏洞测试效果
- 构造后缀为
.php的恶意文件(内容:<?php @eval($_POST['cmd']);?>) - 绕过上传校验,成功上传后门文件
- 通过后门文件执行命令(如
cmd=system("cat /flag");)
封堵建议(优先级:高)
- 限制上传文件后缀:仅允许
jpg/png/gif等静态文件; - 校验文件MIME类型:通过
$_FILES['file']['type']过滤非图片类型; - 重命名上传文件:随机生成文件名(如
time().mt_rand().ext),避免后缀绕过; - 禁止上传目录执行权限:在
upload目录添加.htaccess文件(php_flag engine off)。
五、防护-封堵-专业防护工具
注意:部分AWD竞赛禁止使用开源防护工具(存在特征流量易被检测),使用前需确认比赛规则!
(一)工具:awd-watchbird-master(纯PHP防护WAF)
特点
无需依赖复杂环境,外部编译后上传至靶机即可使用,支持动态替换Flag、拦截攻击命令、查杀WebShell。
安装与初始化
- 执行安装命令(靶机终端中):
- 访问Web控制台初始化:
地址:http://192.168.87.199:880x/?watchbird=ui(x为自身队伍编号)
初始管理员密码:默认无,首次访问设置
核心防护功能
| 攻击类型 | 防护效果 | 示意图 |
|---|---|---|
| 命令执行 | 拦截攻击命令,替换返回结果中的Flag | |
| SQL注入 | 允许注入语法执行,但替换Flag内容 | |
| 文件上传 | 直接拦截恶意文件上传请求 | |
| 动态Flag替换 | 定时更新靶机内Flag文件内容,防止被窃取 |
附加功能:攻击复用
控制台会记录所有攻击Payload,可直接复用攻击其他队伍:
六、防护脚本(无特征流量,推荐使用)
(一)通防脚本(PHP)
功能
拦截SQL注入、命令执行、文件上传、Flag窃取等攻击,记录详细攻击日志(含Payload、IP、时间)。
脚本代码
1 |
|
(二)DoS脚本(慎用!)
严重警告:绝大多数CTF比赛禁止DoS攻击(属于违规操作,会直接取消参赛资格),仅用于应急测试!
功能
通过多线程发送超大体积HTTP请求,占用靶机带宽和连接数。
脚本代码
1 | import socket |
(三)迷惑脚本(干扰攻击者)
1. 防御型不死马(替换Flag)
功能
后台循环运行,持续替换Flag文件内容为假Flag,防止攻击者窃取真实Flag。
脚本代码
1 |
|
2. 攻击型不死马(生成衍生木马)
功能
后台循环生成隐藏后门文件,即使被删除也会自动恢复,维持对靶机的控制。
脚本代码
1 |
|
(四)文件上传防护脚本(Python)
功能
监控靶机内PHP文件修改,自动删除新增的恶意脚本(如上传的后门),并记录文件内容用于审计。
脚本代码
1 | #!/usr/bin/python |
七、使用注意事项
- 禁止攻击本队:靶机地址中的
x需严格对应自身队伍编号,攻击本队会扣除分数; - Flag提交格式:必须使用
flag{XXX}格式,否则提交无效; - 防护脚本部署:通防脚本需放在Web根目录(如
/var/www/html),命名为index.php或在其他PHP文件中引用;









