Web 渗透测试课程学习心得
一、前言
这个学期系统学习了 Web 渗透测试课程,从基础的代理爬虫、身份会话测试,到文件包含、文件上传漏洞,再到手工 SQL 注入与 SQLMap 工具自动化注入,一步步从零接触网络安全攻防。过去我对网络安全的认知只停留在 “黑客攻击网站” 的模糊印象,经过课堂实操、靶场练习与项目实操,我真正理解了漏洞产生原理、利用思路以及对应的防御方案。本篇博文结合课堂多个实操项目,记录我的学习过程、实操踩坑经验与技术总结。
二、课程基础项目:代理、爬虫与身份会话测试
课程前期我们完成了项目 3-1 代理、爬虫和爬行器,以及项目 4 系列身份验证和会话管理测试。 最开始上手 Burp Suite 代理工具时,屡屡遇到浏览器抓不到包的问题:一开始没正确配置浏览器代理端口,证书未安装导致 HTTPS 流量拦截失败,反复对照教程一步步排查才解决。学会抓包改包是渗透测试的基础,所有漏洞测试都离不开对 HTTP 请求数据包的观测与修改。 在会话管理测试实操里,我学会测试 Cookie、Sessionid 是否存在复用、固定、未加密等缺陷。比如靶场中部分页面退出登录后,本地 Cookie 未失效,直接复制 URL 依旧能访问后台,这就是会话销毁不完善带来的安全风险。同时我掌握了弱密码爆破、验证码绕过、越权访问的基础测试思路,明白身份验证是网站的第一道安全防线,一旦失守核心数据会完全暴露。 这一阶段让我建立起核心思维:渗透测试本质是寻找开发者逻辑疏漏,所有攻击手段都是利用代码、服务器、业务逻辑里不严谨的地方。
三、文件类漏洞:文件包含 & 文件上传漏洞实操
课程中期重点学习两大高危文件漏洞:文件包含与文件上传漏洞。
(一)文件包含漏洞
文件包含分为本地文件包含 LFI 和远程文件包含 RFI。PHP 里include()、require()等函数直接接收用户可控参数,未做过滤就会引发漏洞。实操靶场中,页面 URL 存在?file=index.php参数,我修改参数为?file=../etc/passwd(Linux 环境)成功读取服务器敏感配置文件;如果服务器开启 allow_url_include,还能加载远程恶意脚本执行代码。 踩坑点:很多靶场会做简单后缀固定拼接,比如代码自动加上.php,这时需要用 %00 截断(低版本 PHP)或者路径长度截断绕过限制。防御方案也很清晰:白名单限制可包含文件、禁用危险函数、关闭远程包含配置、过滤../路径跳转字符。
(二)文件上传漏洞
文件上传是危害极高的漏洞,目标是上传可执行脚本(php、asp 等)拿到网站权限。课堂实操中我测试了多种绕过方式:
- 前端 JS 校验:仅在网页限制后缀,抓包修改数据包后缀即可绕过;
- MIME 类型校验:检查 Content-Type,修改请求头类型就能欺骗服务器;
- 黑名单过滤:过滤 php,改用 phtml、php3 等冷门可执行后缀;
- 图片马配合文件包含:把一句话木马嵌入图片,先上传图片,再通过文件包含漏洞解析图片执行代码。 实操时我曾直接上传 php 文件被拦截,反复测试后用图片马 + 文件包含组合攻击成功拿到 webshell。同时我也总结防御要点:后端严格校验文件后缀、校验文件头部真实类型、重命名上传文件、限定上传目录不可执行脚本。
四、SQL 注入:手工注入与 SQLMap 自动化工具
课程后半段核心是 SQL 注入,分为手工 SQL 注入和 SQLMap 工具自动化注入,这也是 Web 安全里最经典、危害最大的漏洞之一。
1. 手工 SQL 注入学习
SQL 注入成因是页面直接拼接用户输入到 SQL 语句,没有预编译与过滤。我们从最简单的数字型、字符型注入开始练习:
- 测试注入点:输入
'单引号页面报错,证明参数带入 SQL 执行; - 判断字段数:
order by逐步猜解查询字段数量; - 联合查询
union select获取数据库名、表名、字段; - 脱库读取管理员账号密码。 实操字符型注入时,闭合引号是关键,靶场代码用单引号包裹参数,我构造
' or 1=1 --注释掉后续代码,成功绕过登录验证,无需账号密码直接登录后台。手工注入过程繁琐,但能让我透彻理解 SQL 语句执行逻辑,清楚每一步 payload 的作用,为使用工具打下基础。
2. SQLMap 自动化工具实操
手工注入效率极低,大批量测试、脱库都会用到 SQLMap,Kali 系统自带该工具。课堂上我学习常用指令:
- 基础注入探测:
sqlmap -u "注入URL" - 获取数据库:
sqlmap -u URL --dbs - 指定库查表:
sqlmap -u URL -D 库名 --tables - 读取表数据:
sqlmap -u URL -D 库名 -T 表名 --dump实操时针对 GET 型注入一键跑完数据库信息,对比手工注入节省大量时间。同时老师反复强调:工具是辅助,不能只会用工具不懂原理;如果网站做了 WAF、参数加密,SQLMap 直接跑会失败,这时还是需要手工构造绕过 payload。
五、学习感悟与安全思考
整门课程学完,我不再只站在 “攻击者” 视角,更多学会以防御者思维开发网站。所有漏洞都源于开发不规范:
- 输入不信任原则:任何前端传过来的数据都不能直接拼接 SQL、文件操作、命令执行;
- 分层防御:前端校验仅做体验,核心校验必须放在后端;
- 最小权限原则:网站服务器运行账户权限降低,即使被上传木马也无法控制服务器;
- 定期漏洞扫描:上线前用工具扫描、人工渗透测试,提前修复漏洞。
同时我也明白网络安全是一把双刃剑,课程所有实操全部在授权靶场完成,未经授权对任意网站进行渗透、攻击、脱库都是违法行为。学习渗透测试的目的是守护安全,挖掘漏洞提前修复,而非恶意破坏。作为计算机专业学生,未来不管是做开发还是安全运维,Web 安全都是必备素养,写出安全健壮的代码是基本责任。
六、后续学习规划
目前我仅掌握基础 Web 漏洞利用,后续计划深化学习:
- 进阶漏洞:XSS 跨站、CSRF、SSRF、命令执行等常见漏洞原理与防御;
- 工具深挖:熟练 Burp Suite 插件、SQLMap 高级参数、靶场综合漏洞链利用;
- 代码审计:读懂 PHP、Python 源码,从代码层寻找漏洞根源;
- 合规安全学习:了解等保、渗透测试授权流程,树立合法安全从业意识。
网络安全技术更新极快,漏洞类型、防御策略一直在迭代,只有持续实操、持续复盘,才能不断提升能力。本次课程多个实操项目让我踏出 Web 安全的第一步,后续我会持续在 CSDN 记录更多实操笔记与踩坑总结,稳步深耕网络安全领域。
