20232318 2025-2026-1 《网络与系统攻防技术》实验八实验报告
一、实验核心内容
二、Web 前端 HTML 模块:理解与实践过程
(一)核心概念理解
(二)实践操作过程
- 首先完成 Apache 服务器的安装,从官方渠道获取适配操作系统的安装包,按照向导完成路径配置与环境变量设置,避免端口冲突(默认 80 端口),发现端口并未被占用
![b80eea59-746b-4ebb-84af-ca6a9fdc52c7]()
- 学习 Apache 的启停命令,通过命令行工具或图形化界面启动服务,在浏览器中输入 “localhost” 验证是否成功访问默认首页,确保服务器正常运行。启动Apache,在命令行中输入:
systemctl start apache2
终端输入命令,在 Apache 文档根目录创建 HTML 文件:sudo vim /var/www/html/login_20232318.html![44e650bf79c7f9f188ac8fdd3c622e7f]()
访问表单页面
- 打开 Kali 浏览器,输入 URL:
http://localhost/login_20232318.html,即可看到带 “20232318wangtianhao” 标识的登录表单。![3abf03c462812774919b49a54660b6a8]()
在原HTML上加入JavaScript对用户输入进行验证
用户名要求![decd2b4e8768135d9c39c2ae426f379b]()
密码要求
![16a965b343b38521618cd0f88b59249d]()
登陆成功
JavaScript注入,在用户名处输入下面的代码:![f9257e4e5a389e63bcaaa5d6ef9655a5]()
<script type="text/javascript">alert("JavaScriptInjectionSucceed.")</script>![4f3d21c21c98b9d24bcd7f6a58e9c729]()
HTML注入,在用户名处输入下面的代码:
<h1>HTML injection succeed.</h1>![9af82d5f5b8420a0b701149175cc64e3]()
Web后端MySQL基础
因为kali中自带MySQl,所以使用
systemctl start mysql打开MySQL服务systemctl status mysql确认服务状态。![46b4b4b8e2e1a6eb9228259c04d7c832]()
输入MySQl启动
进行数据库相关工作:
-- 1. 创建学号命名的数据库 CREATE DATABASE 20232318db; -- 2. 切换到该数据库 USE 20232318db; -- 3. 创建用户表(匹配JS验证规则) CREATE TABLE 20232318_user ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(20) NOT NULL, password VARCHAR(20) NOT NULL ); -- 4. 插入测试数据(后续登录用) INSERT INTO 20232318_user (username, password) VALUES ('test01', '123456789'); -- 5. 验证数据 SELECT * FROM 20232318_user;![a9500480952a1864dfe7f718d6d16e82]()
Web后端编写PHP网页
同样在kali中启动php服务
![79dcf0b8988647038296873423086b4f]()
创建 PHP 文件
sudo vim /var/www/html/20232318_check.php粘贴以下代码(密码与 MariaDB 一致):
![4996a158-b8d6-4949-bdee-87bfd6906639]()
修复文件权限:
在浏览器打开20232318_login.html,输入:- 用户名:
test01(数据库中已存) - 密码:
123456789(9 字符)点击登录→跳转到20232318_check.php,显示 “验证成功” 即完成。
![8dc0970ff16de3759de81db2c66642e0]()
注入攻击(HTML/JS/SQL 注入)
利用用户输入未过滤的漏洞,完成注入测试。1. HTML 注入测试
在20232318_login.html的用户名输入框填:<h1 style="color:red;">20232318 HTML注入成功</h1>![17cec0de2ba041ccd4309545962e8b58]()
SQL 注入测试
在用户名输入框填:test01' OR '1'='1![a8ac683bdbb9e46b03c1006958ebd631]()
![aa8e7979c4482f83cad5948d0adc8f8c]()
安装 DVWA + 完成攻防实验
DVWA 是漏洞练习平台,用于练习 SQL 注入、XSS、CSRF 等攻击。1. 下载并配置 DVWA
从 GitCode 下载 DVWA 压缩包
- 在当前 GitCode 页面(
https://gitcode.com/2302_81881142/DVWA),点击页面上方的 「下载 zip」 按钮(在 “Clone” 按钮左侧); - 等待压缩包下载完成(Kali 浏览器默认保存到
/root/Downloads目录)。
![e6f46aed799e179b7e4f4a3883206fe6]()
解压 DVWA 到 Apache 目录
打开 Kali 终端,执行以下命令:进入Apache网站根目录 cd /var/www/html # 将下载的压缩包移动到当前目录 sudo mv /root/Downloads/DVWA-master.zip ./ # 解压压缩包 sudo unzip DVWA-master.zip # 重命名解压后的文件夹为DVWA(方便访问) sudo mv DVWA-master DVWA![092bcf89c6ef6d2e3d40d8cb4c003b2f]()
配置 DVWA 的数据库连接
进入 DVWA 的配置目录,复制默认配置文件:
cd /var/www/html/DVWA/config
sudo cp config.inc.php.dist config.inc.php
修改配置文件,连接你已创建的
20232318dbsudo vim config.inc.php找到数据库配置项,替换为我的信息:
![c2ab2fc40e267427c2e7fd3fda71f1e5]()
设置 DVWA 目录权限
确保 Apache 能读写 DVWA 目录:# 回到Apache根目录 cd /var/www/html # 设置DVWA目录的所属用户为Apache运行用户(www-data) sudo chown -R www-data:www-data DVWA # 设置目录权限 sudo chmod -R 755 DVWA![afbce37c866b5ec4a6c8bfe41fc430e1]()
初始化 DVWA 数据库
- 打开 Kali 浏览器,访问:
http://localhost/DVWA;
![34c7b94717abe128b97ebf4df81d8d09]()
- 页面会显示 “DVWA Setup”,点击下方的 「Create / Reset Database」 按钮;
- 等待页面跳转,此时 DVWA 会自动在你的
20232318db中创建所需的测试表;
3. 输入 DVWA 默认账号:
- 用户名:
admin - 密码:
password点击 “Login” 登录。
![ea4b98352bca2decd110d5a6b4f3d5d0]()
![4ce3800e3695fd4cbd1c200395f20af8]()
验证 DVWA 可用(适配你的实验)
登录后,在 DVWA 左侧栏选择 「DVWA Security」,将 “Security Level” 改为 「Low」(方便后续注入实验),然后即可进行:![edc2bb169676edf875d8f4078c9b0d8f]()
- SQL 注入:左侧栏选 “SQL Injection”,输入
1' OR '1'='1测试; -
![16b8132123f1b60ba2d093d3d04e5c25]()
-
输入1' union select 1,2 # 测试,得到参数的回显顺序是1、2。
![c252ba7b583dbca3292ccbe248601372]()
-
输入1' union select 1,group_concat(column_name) from information_schema.columns where table_name = 'users' #获取表user中的字段
-
![a0d9db67f6f12d68e4a98df567774eb3]()
- XSS(反射型):
- 输入XSS
-
![45702f9caf5ef532a582c1026f650b6d]()
-
注入<script>alert('XSS')</script>。
-
![c808b988852302bf3d4a8bc6cf17c7e7]()
-
![43d717b2835b0af2c6bf90d106956fb5]()
-
使用Stored
- 输入框输入<script>alert('20232318')</script>
-
![e142bd01e8c87b588b1c3703cc897bc0]()
-
使用DOM
- URL中default参数会显示提交的内容,改变default为<script>alert('20232318')</script>。
-
![b813bb839fcd665df0f2b4083f27defc]()
-
![ccd9494137c468a8355586f3bdd837a1]()
-
- 左侧栏选 “XSS (Reflected)”,输入
<script>alert("20232318 XSS成功")</script>测试; -
![5325b406610cb82c561d8c91c153e9ce]()
-
![9fe29e15d848482cb7432a457150dca7]()
- CSRF:左侧栏选 “CSRF”,构造恶意链接修改密码,我修改新密码为20232318
-
![427457b603bfc24568773dbf3a3a514c]()
- 修改后的密码会显示在URL中,可见新密码为20232318
-
![1d43743ace41c6c7facbe50db0e8331d]()
-
进入Test Credentials实验
-
输入原来密码password,显示密码错误
-
![44842bda91e793c84e099769c1b0a3a6]()
-
输入新密码20232318,显示登录成功
-
![90009779b090e13e200bb066f930f4b3]()
- 打开 Kali 浏览器,输入 URL:
三、问题及解决方案
问题一:无法正常启动DVWA程序

解决办法:页面空白是因为Apache 未启用 PHP 模块(DVWA 是 PHP 程序,必须让 Apache 支持解析 PHP)先查看已安装的 PHP 版本
php -v
然后启用对应版本的 PHP 模块
然后安装DVWA所需的PHP拓展
安装PHP扩展(以PHP7.4为例)
sudo apt install -y php7.4-mysqli php7.4-gd php7.4-curl
# 重启Apache
sudo systemctl restart apache2
最后重启即可
四、实验总结
onerror事件实现 JS 注入,才明白漏洞不是理论概念 —— 用户输入未过滤、直接拼接 SQL,就是攻击的突破口。










































浙公网安备 33010602011771号