20232328 2025-2026-1《网络与系统攻防技术》实验八实验报告
1.实验内容
- Web前端HTML。能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。
- Web前端javascipt。理解JavaScript的基本功能,理解DOM。在(1)的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎+输入的用户名”尝试注入攻击:利用回显用户名注入HTML及JavaScript。
- Web后端:MySQL基础:正常安装、启动MySQL,建库、创建用户、修改密码、建表
*Web后端:编写PHP网页,连接数据库,进行用户认证 - 最简单的SQL注入,XSS攻击测试
- 安装DVWA或WebGoat平台,并完成SQL注入、XSS、CSRF攻击。
2.实验目的
搭建WEB网页,进行Web前后端开发和安全测试
3.实验过程
3.1Web前端HTML
3.1.1什么是HTML?
- HTML 是超文本标记语言,网页的基础骨架,非编程语言
- 核心作用是用标签描述网页结构和内容语义,供浏览器解析呈现
3.1.2HTML的实现
首先使用如下的命令来检查端口80是否开放
netstat -tupln | grep 80

命令执行后没有返回内容,说明当前系统中没有程序在监听 80 端口和占用80端口
然后再kali中直接启动Apache,并确认服务状态
systemctl start apache2
systemctl status apache2.service

可以看见apache2处于active状态
打开浏览器进行验证,输入localhost,可以看到Apache的欢迎页面

说明Apache Web服务器安装成功
3.1.3 HTML表单功能实现
进入虚拟机的/var/www/html目录,创建html文件

然后输入代码进行编写

然后根据目录中html文件的地址,双击运行

3.2 Web前端JavaScript
3.2.1JavaScript的基本功能有什么?什么是DOM?
- JavaScript 核心功能:操作网页元素、处理用户交互(点击 / 输入等)、动态修改内容 / 样式、发送网络请求、处理数据(计算 / 解析)、控制页面跳转 / 计时。
- DOM(文档对象模型):将 HTML 文档抽象为树形结构,让 JS 能访问、修改网页的元素、属性和内容。
3.2.2在3.1.2的基础上添加用户密码规则
加入规则

进行验证

当输入满足所有要求后

3.2.3尝试注入攻击
(1)JavaScript 注入
用户名输入:aaaa<img src=x onerror=alert('XSS注入成功')>

(2)HTML 注入
用户名输入test<span style="color:red;font-size:36px;font-weight:bold;">HTML注入成功!</span>

3.3Web后端MySQL基础
3.3.1使用下面代码打开MySQL服务
systemctl start mysql
systemctl status mysql

使用下面命令启动MySQL,建库、创建用户
mysql
CREATE DATABASE 20232328_data;
USE 20232328_data;
CREATE USER 'user20232328' IDENTIFIED BY 'a123456';
GRANT ALL PRIVILEGES ON 20232328_data.* TO 'user20232328';
FLUSH PRIVILEGES;
使用下面命令建表
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 ('mazeyi', 'a123456');
查看插入的数据
SELECT * FROM testtable;

3.3.2编写PHP文件

登录成功

密码错误

用户名错误

3.3.3SQL注入与XSS注入
1.SQL 注入测试
打开登录页 http://localhost/20232328_test.html;
用户名输入框 输入注入语句' OR 1=1 #

显示注入成功,这是因为拼接后的 SQL 语句变为:
SELECT pwd FROM testtable WHERE name = '' OR 1=1 #' LIMIT 1
- OR 1=1:条件恒成立,查询返回表中第一条记录;
- 井号注释掉后面的' LIMIT 1,避免语法错误。
2.XSS注入测试
- 用户名输入mazeyi ;

注入成功,这是因为浏览器会执行 script标签内的恶意代码
3.4安装DVWA并完成SQL注入,XSS,CSRF攻击
3.4.1安装DVWA
使用下面命令安装DVWA
sudo apt install dvwa

然后开启DVWA
dvwa-start

- 初始用户为:admin
- 初始密码为:password
然后往下滑,创建一个database,然后重新登录
找到DVMA Security,然后更改为low,一定要点submit

3.4.2SQL注入
输入1,输出id为1

输入下面的命令获取数据库名
1' UNION SELECT 1,database() from information_schema.schemata#;

使用下面命令来查询数据库中所有表的名称
-1' union select database(),group_concat(table_name) from information_schema.tables where table_schema='dvwa' #

使用下面的命令在users表中获取所有字段名称
-1' union select database(),group_concat(column_name) from information_schema.columns where table_schema='dvwa' and table_name='users' #

使用下面的命令来获取用户名和密码
-1' union select group_concat(user_id,first_name),group_concat(user,password) from users #

3.4.3XSS注入
-
XSS(Dom)
选择修改default参数,来进行注入攻击
将原本default后面的值修改为>
![image]()
-
XSS(Reflected)
在name栏里输入
<script>alert('XSS攻击成功!')</script>

可以看见注入成功
- XSS(Stored)
在Message输入框中填入
<script>alert('2328')</script>
并提交,脚本会被存储,访问页面时就会执行。

然后随便输入点击发送,会出现弹窗,说明攻击成功

3.4.3CSRF攻击
在 CSRF 页面输入新密码之后,点击change,观察浏览器地址栏的请求 URL,password_new和password_conf为了新密码

然后根据获取的信息进行测试admin的新密码

发现成功登录
通过直接修改URL修改密码
127.0.0.1:42001/vulnerabilities/csrf/?password_new=666666&password_conf=666666&Change=Change#
然后进行验证密码是不是666666

验证通过
4.问题及解决方案
问题一:在使用html链接数据库的时候,会弹出php的代码,而不是直接链接到php

问题一解决方案:这是因为直接通过file://协议打开了 HTML 文件,而不是通过 Apache的http协议访问,导致浏览器把login.php当作普通文件弹出,而不是交给 Apache 解析执行。

应该是在浏览器地址栏输入 http://localhost/20232328_test.html 然后回车访问。
5.学习感悟、思考
本次Web前后端开发与网络攻击测试实验,让我对网络安全有了全新的具象认知。
前端HTML表单与JavaScript校验的编写中用户交互的每一个输入点都是潜在的安全入口。后端MySQL数据库配置与PHP认证功能的开发,让我看清数据存储与校验环节的防护短板会直接暴露系统风险。DVWA平台的实操中SQL注入、XSS、CSRF等攻击手段,本质上都是对系统设计漏洞与编码不规范的精准利用
实验让我领悟到,网络安全的核心在于“攻防视角的互换”——开发者若只关注功能实现而忽视安全考量,便会给攻击者留下可乘之机;唯有以攻击者的思维审视每一个开发环节,将输入过滤、逻辑校验、权限管控融入从前端到后端的全流程,才能真正理解“攻防一体”的实践意义


浙公网安备 33010602011771号