20232413 2025-2026-1 《网络与系统攻防技术》实验八实验报告

一.实验内容

1.Web前端HTML安装Apache,理解HTML,编写含有表单的HTML

2.Web前端javascipt理解JavaScript的基本功能,理解DOM。JavaScript 验证与注入测试

3.Web后端掌握 MySQL 操作

4.Web后端进行PHP 数据库交互与用户认证

5.SQL注入,XSS攻击测试

6.DVWA 平台部署与攻击测试

二.实验过程

2.1Web 前端 HTML 与 Apache 部署

2.1.1Apache 安装与启停

输入命令:

systemctl start apache2

启用Apache服务

image

 输入:systemctl status apache2.service 确认Apache启用状态

image

 打开kali浏览器,输入localhost

image

 看到Apache界面

2.1.2编写含表单的HTML

进入 Apache 根目录(Kali 默认路径/var/www/html):
cd /var/www/html
创建 HTML 文件:
nano 20232413.html
写入以下代码:

image

 访问http://localhost/20232413.html验证页面加载。

image

 2.2Web前端JavaScript

2.2.1添加 JavaScript 验证逻辑

在2.1创建的 20232413.html 的<head>标签内添加脚本:

image

当输入密码为空时:

image

 密码不足八位时:

image

 正确登入:

image

 2.2.2注入攻击测试:

1.HTML 注入:在用户名输入框输入<h1>test</h1>,点击登录后页面会显示<h1>样式的 “欢迎 test”,说明 HTML 注入成功。

image

2. JavaScript 注入:输入<img src=x onerror=alert('XSS测试')>,点击登录后会弹出攻击弹窗,验证 XSS 漏洞。

image

 2.3Web 后端 MySQL:安装与基础操作

输入命令:systemctl start mysql打开虚拟机自带的MySQL ,输入systemctl status mysql查看服务状态

image

 

登录 MariaDB
sudo mysql -u root -p
创建数据库
CREATE DATABASE 20232413db;
切换数据库
USE 20232413db;
创建用户
CREATE USER 'user20232413' IDENTIFIED BY 'denghao';
授权用户
GRANT ALL PRIVILEGES ON 20232413db.* TO 'user20232413';
刷新权限
FLUSH PRIVILEGES;
修改用户密码
ALTER USER 'user20232413' IDENTIFIED BY 'dh356456';
创建表(testtable)
sql
CREATE TABLE testtable (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
pwd VARCHAR(255) NOT NULL
);
插入数据
INSERT INTO testtable (name, pwd) VALUES ('denghao', 'dh356456');
查询数据
SELECT * FROM testtable;

image

 2.4Web 后端 PHP:数据库连接与用户认证

创建20232413.php文件,放入/var/www/html:

image

 修改 HTML 表单的action为该 PHP 文件,测试登录功能。

image

 

image

 2.5SQL 注入与 XSS 攻击测试

SQL 注入测试
在密码输入框输入' OR 1=1 --,用户名任意,点击登录后直接显示 “登录成功”,说明绕过认证(因 SQL 语句变为SELECT * FROM users WHERE username='' OR 1=1 --' AND password='xxx')。

image

 

XSS 攻击测试
在用户名输入框输入

<img src=x onerror=alert("XSSInjectedSucceed")>

密码框输入

' OR '1'='1

登录成功后页面执行弹窗脚本,验证 XSS 漏洞。

image

 2.6DVWA 平台安装与攻防测试

下载 DVWA 源码

sudo git clone https://github.com/digininja/DVWA.git /var/www/html/dvwa

image

 进入 DVWA 配置目录,复制默认配置文件:

cd /var/www/html/dvwa/config
sudo cp config.inc.php.dist config.inc.php

image

 编辑配置文件,适配本地 MySQL 环境:

sudo nano config.inc.php

image

 修改MySQL 信息:

image

 设置目录权限:

sudo chmod -R 777 /var/www/html/dvwa/hackable/uploads/

sudo chmod -R 777 /var/www/html/dvwa/config/

image

DVWA 登录与安全级别配置
1.登录页面输入默认账号密码:
用户名:admin
密码:password
点击 Login 进入 DVWA 主界面
2.配置安全级别(测试需设为 Low):
点击左侧菜单栏 DVWA Security
下拉框选择 Low,点击 Submit 保存(页面提示 Security Level Set To: Low 即生效)

image

 

image

2.6.1 SQL 注入

目标:绕过查询限制,获取数据库所有用户数据
进入模块:左侧点击 SQL Injection,进入 ID 查询页面
测试步骤:
输入 1,点击 Submit,页面返回 ID=1 的用户信息

image

 


输入 1',点击 Submit,页面报错,单引号未过滤,存在注入漏洞

image

输入 1' OR 1=1 --,点击 Submit:

image

 

原理:注入后 SQL 语句变为 SELECT first_name, last_name FROM users WHERE user_id = '1' OR 1=1 --'
OR 1=1 使查询条件恒成立,-- 注释后续语句,页面返回所有用户信息(如 admin、gordonb 等)

2.6.2XSS 攻击

(1)反射型 XSS(XSS Reflected)
脚本仅在当前请求生效,不存储到数据库
进入模块:左侧点击 XSS Reflected
测试步骤:
在输入框输入 <img src=x onerror=alert('反射型XSS成功')>
点击 Submit,页面弹出弹窗

image

 (2)存储型 XSS(XSS Stored)

脚本存储到数据库,所有访问该页面的用户都会触发
进入模块:左侧点击 XSS Stored(留言板功能)
测试步骤:
姓名输入框:20232413
留言框输入 <script>alert('存储型XSS,所有用户可见')</script>
点击 Sign Guestbook,页面立即弹出弹窗
刷新页面,弹窗再次出现(脚本已存入数据库)

image

 

2.6.3CSRF 攻击(Cross-Site Request Forgery)
目标:诱导已登录用户点击恶意链接,修改其 DVWA 密码
进入模块:左侧点击 CSRF(密码修改功能)

输入新密码:dh123

点击Change,退出后用新密码可登录

攻击步骤:
(1)构造恶意 HTML 文件(attack20232413.html):

nano attack20232413.html

写入以下内容:

image

 

(2)诱导测试(模拟受害者操作):

保持 DVWA 登录状态(admin 账号已登录)
浏览器访问 http://localhost/attack20232413.html
点击 点击领取 按钮,页面跳转至 DVWA 密码修改成功页面

image

(3)验证攻击结果:
退出 DVWA,使用原密码 password 登录失败

image

 


输入被修改的密码 hacked20232413,登录成功

image

 

三.问题及解决方案

问题 :CSRF 攻击后密码未修改。

解决方案:确保受害者已登录 DVWA,恶意 HTML 中的action地址需与 DVWA 的 CSRF 模块地址一致

四.学习感悟和思考

本次实验让我从 “开发” 和 “攻击” 双视角理解 Web 安全。看似简单的表单验证和数据库查询,若未做安全处理,会直接暴露 SQL 注入、XSS 等致命漏洞。例如,PHP 中直接拼接 SQL 语句的写法极易被利用,而前端未过滤用户输入则会导致 XSS 攻击。通过 DVWA 的不同安全级别对比,我发现安全防护的核心在于 “输入过滤” 和 “参数化处理”—— 如使用mysqli_prepare预处理 SQL 语句,或用htmlspecialchars转义 HTML 标签。未来开发中,需将安全意识融入每一步,同时也要深入学习漏洞原理,才能有效防御攻击。

posted @ 2025-12-01 19:17  邓昊  阅读(7)  评论(0)    收藏  举报