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

news/2025/12/7 23:32:59/文章来源:https://www.cnblogs.com/lara666/p/19266705

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

Web安全

一、 实验内容

  1. Web前端HTML:能安装启停Apache,编写含表单的HTML网页。
  2. Web前端JavaScript:能用JS验证表单并回显欢迎信息,测试XSS注入。
  3. Web后端数据库:能安装配置MySQL,完成建库、建用户、建表操作。
  4. Web后端数据库连接:能用PHP连接数据库,实现用户登录认证功能。
  5. 基础攻击测试:能进行简单的SQL注入与XSS攻击测试。
  6. 安全攻防平台:安装DVWA或WebGoat平台,完成三项主要攻击实践。

二、 实验目的

通过搭建Web应用环境,实践前后端开发,并深入理解SQL注入、XSS等常见Web安全漏洞的原理与防护方法。

三、 实验过程与分析

任务一 Web前端HTML

1. Apache Web服务器的安装与配置

Apache是一款开源的Web服务器软件,广泛用于托管网站、提供Web服务和应用程序。

使用以下命令操作Kali虚拟机中自带的Apache服务:

  • 启动服务:systemctl start apache2
  • 查看状态:systemctl status apache2.service
  • 关闭服务:systemctl stop apache2

若虚拟机启用了防火墙,需允许HTTP流量进出:

ufw allow 'Apache'

5c2d340b5c032a5ad3f80674cf3db992

打开浏览器,输入localhost,若能看到Apache的欢迎页面,说明Web服务器安装成功。

f6f44bd7452605df03f213d5352f3c2f

2. HTML表单功能实现

进入虚拟机的/var/www/html目录,使用vi命令创建两个HTML文件,分别采用POST和GET方法提交表单信息:

  • POST方法:数据在请求体中发送,不显示在URL中,安全性更高;
<!DOCTYPE html>
<html>
<head><title>GET方式登录</title><style>.login-box {width: 300px;margin: 50px auto;padding: 20px;border: 1px solid #ccc;}label {display: inline-block;width: 80px;}</style>
</head>
<body><div class="login-box"><h3>用户登录(GET方式)</h3><form action="login.php" method="GET"><label for="user">用户名:</label><input type="text" id="user" name="username" required><br><br><label for="pwd">密码:</label><input type="password" id="pwd" name="password" required><br><br><input type="submit" value="提交登录"></form></div>
</body>
</html>
  • GET方法:数据拼接在URL中,可见明文用户名和密码。
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><title>用户登录(POST方式)</title><style>/* 简单样式优化,提升页面美观度 */* {margin: 0;padding: 0;box-sizing: border-box;}body {font-family: Arial, sans-serif;background-color: #f5f5f5;display: flex;justify-content: center;align-items: center;height: 100vh;}.login-container {background-color: white;padding: 30px 40px;border-radius: 8px;box-shadow: 0 2px 10px rgba(0,0,0,0.1);}.login-container h2 {text-align: center;color: #333;margin-bottom: 25px;border-bottom: 2px solid #007bff;padding-bottom: 10px;}.form-group {margin-bottom: 20px;}.form-group label {display: block;color: #666;margin-bottom: 8px;font-weight: 500;}.form-group input {width: 100%;padding: 10px;border: 1px solid #ddd;border-radius: 4px;font-size: 16px;}.form-group input:focus {outline: none;border-color: #007bff;box-shadow: 0 0 0 2px rgba(0,123,255,0.25);}.submit-btn {width: 100%;padding: 12px;background-color: #007bff;color: white;border: none;border-radius: 4px;font-size: 16px;cursor: pointer;transition: background-color 0.3s;}.submit-btn:hover {background-color: #0056b3;}</style>
</head>
<body><div class="login-container"><h2>POST方式 - 用户登录</h2><!-- 核心:method="POST",数据在请求体中传输(不显示在URL) --><form action="login.php" method="POST"><div class="form-group"><label for="username">用户名:</label><!-- name属性必须与后端PHP接收的参数一致(username/password) --><input type="text" id="username" name="username" required placeholder="请输入用户名"></div><div class="form-group"><label for="password">密码:</label><input type="password" id="password" name="password" required placeholder="请输入密码"></div><button type="submit" class="submit-btn">登录</button></form></div>
</body>
</html>

表单显示效果及URL展示如下:

GET:
8902f21da11e6f6de03977a0caf28fce

0db5705886584f44e7e50a0937ceb239

POST:

b653bb2cf2dcd04ebd68b9c98b838ec9

04f8b21761c355c90daf1514d5fdb2ce

任务二: Web前端JavaScript

1. JavaScript表单验证功能实现

静态HTML无法实现复杂验证逻辑,此处通过JavaScript实现以下验证规则:

  • 用户名与密码非空;
  • 密码长度不低于8位。

JavaScript通过DOM API获取输入值并实时判断,在数据发送到服务器前提供即时反馈:

  • 用户名/密码为空:在对应位置显示错误提示;
  • 密码长度不足:弹出弹窗提示;
  • 所有条件满足:回显用户登录信息。

验证逻辑代码及运行效果如下:

377fc333429d80c21b182b3209b96888

93feb7c181a8c584fe239ee7cbfd58d0

81dafb8acdd5fb4395cc89a1180befc3

2. 注入攻击测试

由于程序未对用户输入进行安全检查或转义处理,直接将输入作为HTML一部分拼接输出,导致注入攻击风险。

(1)HTML注入

在用户名输入框中输入:<u>HTML injection succeed.</u>,其余字段满足验证条件后,文本会以带下划线的格式回显在页面,证明注入成功。

a3fe15f0f0d754e0d168eb5d3e937890

(2)JavaScript注入

在用户名输入框中输入:<img src='x' onerror='document.body.innerHTML = "JavaScript injection succeed."'>,该代码尝试加载不存在的图片x,触发onerror事件执行JavaScript,将网页body内容替换为指定文本。

e135f7a2f01e8b87545c11a0d9413068

任务三: Web后端MySQL

1. MySQL服务启停与状态查看

使用以下命令操作Kali虚拟机中自带的MySQL服务:

  • 启动服务:systemctl start mysql
  • 查看状态:systemctl status mysql

91c362c3a6797aae8c399ab07ad47aa4

2. 数据库基础操作

输入mysql进入数据库命令行,执行以下操作(代码及过程如图17所示):

-- 1. 创建新数据库
CREATE DATABASE db20232426;-- 2. 进入新数据库
USE db20232426;-- 3. 创建用户user1(与原语句一致)
CREATE USER 'user1' IDENTIFIED BY 'user@111';-- 4. 授予用户所有权限(改为授权给新数据库db20232426)
GRANT ALL PRIVILEGES ON db20232426.* TO 'user1'@'localhost';-- 5. 刷新权限
FLUSH PRIVILEGES;-- 6. 修改用户密码(与原语句一致,改为user@1110)
ALTER USER 'user1'@'localhost' IDENTIFIED BY 'user@1110';-- 7. 创建表tablefirst(结构与原语句完全一致)
CREATE TABLE tablefirst (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50) NOT NULL,password VARCHAR(100) NOT NULL
);-- 8. 插入测试数据(与原语句一致,用户和密码不变)
INSERT INTO tablefirst VALUES 
(1, 'user1', 'user@111'),
(2, 'user2', 'user@222');-- 9. 验证数据(查看表内容,确认创建成功)
SELECT * FROM tablefirst;

3d0aa58e2e78f9d09660d888c4ce9ce5

任务四: 使用PHP连接数据库实现登录认证

PHP用于处理前端提交的表单数据,实现与MySQL数据库的连接及用户认证功能,核心需求:

  • 查询用户是否存在;
  • 校验密码是否匹配;
  • 返回登录成功/失败信息;
  • 安全关闭数据库连接。

注意:后端处理程序文件名需与表单action属性一致,命名为login.php

代码及运行效果如下:

(图18,数据库连接部分代码)

8fc3e5a6d43a0bc1af8361db265316ae

(用户存在且口令正确)

b52934c6f3f03d7b03d95876c4bf6f2d

(用户存在但口令错误)

6e1404cf577588bfb51f09c1b98f652e

(用户不存在)

任务五: 基础攻击测试

1. SQL注入攻击

程序未对用户输入进行安全过滤,直接将表单数据拼接至SQL语句,导致攻击者可通过恶意输入改变语句执行逻辑。

(1)已知用户名场景

在密码框注入:' OR '1'='1,后端拼接后的SQL查询条件变为:

WHERE username='已知用户名' AND password='' OR '1'='1'

由于'1'='1'恒成立,WHERE子句返回值恒为真,攻击者无需正确密码即可登录。

8783df1d8449e4e599794de19fbc205e

6b61eb6d618c78bd7d93a16165133722

(2)未知用户名场景

在用户名和密码栏均输入:' OR '1'='1,绕过整个身份验证逻辑,实现非法登录。

c0138fefc4fc05a56c861cb1bf9eb9bd

8b39c4c5ead6852c2859bb4ab4a39791

4.5.2 XSS攻击

XSS(跨站脚本)攻击通过向网页注入恶意脚本代码,在用户浏览器中执行。

在用户名输入框注入:' OR '1'='1' -- <img src=1 onerror=alert('XSS成功')>,密码框输入任意值提交。由于系统未过滤或编码输入内容,代码被直接回显至页面:浏览器尝试加载不存在的图片x,触发onerror事件执行JavaScript,弹出警告框。

6d21773922b243c0cb02375b57494d98

任务六: WebGoat平台攻击实践

在主机安装WebGoat靶场(安装参考:https://blog.csdn.net/2302_82189125/article/details/135894689),选择WebGoat靶场完成SQL注入、XSS、CSRF三类攻击实践。

1. SQL注入攻击(A3 Injection→SQL Injection(intro)9-13题)

(1)第9题(选择题)

目标:查询表中所有数据
给出语句:SELECT * FROM user_data WHERE first_name = 'John' AND last_name = '____ + ____+ ____';
思路:闭合前面的单引号,构造永真条件
答案:Smith';or;'1'='1

29b55bc8276a61cbf87ac9cbf167f15c

(2)第10题(填空题)

目标:查询表中所有数据
给出语句:SELECT * FROM user_data WHERE login_count = " + Login_Count + " AND userid = " + User_ID;
思路:数字型注入,构造永真条件
输入:

  • Login_Count:1
  • User_ID:1 or 1=1

8dabe71aed67d7af9d677252fc68dbe4

(3)第11题(填空题)

目标:查询表中所有数据
给出语句:SELECT * FROM employees WHERE last_name = '" + name + "' AND auth_tan = '" + auth_tan + "'";
思路:字符型注入,闭合引号后构造永真条件
输入方案一:

  • Employee Name:' or '1'='1 --
  • TAN:1

5774f1811b8afdf8d5dfc37ed0fc6776

输入方案二:

  • Employee Name:1
  • TAN:' or '1'='1 --

7f82080bfcc1484970bbf33e836459bb

(4)第12题(填空题)

目标:修改表中特定数据
给出语句:SELECT * FROM employees WHERE last_name = '" + name + "' AND auth_tan = '" + auth_tan + "'";
思路:闭合引号后拼接UPDATE语句
输入:

  • Employee Name:Smith' ; UPDATE employees SET salary = 99999 WHERE userid = 37648; --
  • TAN:3SL99A

61fd132b665169857dc9ae0b2960e0cd

(5)第13题(填空题)

目标:删除表中所有数据
推测语句:SELECT * FROM access_log WHERE name = '____';
思路:闭合引号后拼接DROP语句,用注释忽略多余引号
输入:' ; DROP TABLE access_log; --

309fa8b8186f0d8428675b49bdf47ce5

2. XSS攻击(A3 Injection→Cross Site Scripting 7、10、11题)

(1)第7题(反射型XSS)

目标:通过XSS攻击显示弹框或打印信息
输入:<script>alert('XSS')</script>
说明:仅第一个字符型参数输入框有效,第二个数值型参数输入框无效。

65c0ff4f04defa264ac1c5ad5688a8d7

(2)第10题(基于DOM的XSS)

目标:找到测试代码路径
思路:右键检查源代码,在GoatRouter.js中搜索route,发现路由规则:test/:param':'testRoute
答案:start.mvc#test/

a8e1ceeb6d6fc19d70aac7412c15f2c6

(3)第11题(基于DOM的XSS)

目标:通过路由反射参数执行webgoat.customjs.phoneHome()
思路:利用onerror事件执行JavaScript,构造URL:
http://127.0.0.1:8080/WebGoat/start.mvc#test/<img src=x onerror="webgoat.customjs.phoneHome()">
结果:控制台显示随机数672491635
7dca6d16250843e774eae6ca75f33910

f5c6cabede73546377586291f4d9b3f4

3. CSRF攻击(A10 Server-side Request Forgery 3、4、7、8题)

仅完成第8题(其余题目因环境问题未解决):

题目场景:模拟登录CSRF攻击
攻击步骤

  1. 创建恶意账号(格式:csrf-用户名);
  2. 保持原账号登录状态,登录恶意账号;
  3. 回到原账号点击按钮,原账号浏览器会接收恶意账号的Session Cookie,覆盖原有登录状态;
  4. 原账号后续操作均在恶意账号下执行,攻击者可查看其行为。

(图33,CSRF攻击题目八创建恶意账号)

(图34,CSRF攻击题目八回到原账号提交)

5. 问题及解决

问题一:XSS攻击<script>标签注入失效

  • 现象:输入<script>alert("XSS攻击成功!");</script>后,无弹框且未回显用户名,仅显示欢迎信息。
  • 原因:现代浏览器为防止XSS攻击,会拦截通过innerHTML插入的<script>标签执行。
  • 解决:使用<img>标签的onerror事件绕过防护,输入:<img src=x onerror=alert("XSS攻击成功!")>,图像加载失败时触发事件执行JavaScript。

问题二:PHP连接数据库无验证提示信息

  • 现象:输入正确/错误的用户名密码,仅页面跳转,无任何提示。
  • 原因:前后端字段名不一致,前端表单字段为usernamepassword,后端PHP代码获取namepwd字段,导致无法接收数据。
  • 解决:修改PHP代码,使字段名与前端保持一致。

6. 心得体会

本次实验围绕Web安全核心漏洞展开,涵盖前后端开发、SQL注入、XSS攻击、CSRF攻击及WebGoat平台实践,让我对Web攻防逻辑有了直观认识。

实验过程中遇到较多挑战:XSS攻击初期因浏览器默认防护机制未成功,通过查阅资料采用onerror事件绕过;CSRF攻击因BurpSuite安装失败、网络环境异常,仅完成部分题目,暴露了我在工具使用和环境配置上的不足。

通过实践发现,Web攻击的实际实施难度远超理论学习,现代浏览器、框架的安全防护机制进一步增加了攻击门槛。同时,我也深刻体会到,Web安全的核心在于“输入验证”和“输出编码”,任何未过滤的用户输入都可能成为漏洞入口。

八次实验虽已结束,但我仅触及网络攻防技术的冰山一角。未来还需深入学习漏洞原理、防护机制及工具使用,不断提升实践能力,才能在网络安全领域稳步前行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/991904.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025.12.7总结

今天尝试用ai生成爬取京东评论的程序,但是怎么整也不行,这反扒机制太强了,然后参考舍友的一篇博客的代码。里面有一项新的技术DrissionPage,这种是完全模拟用户行为来获取想要的数据 优点是能完美解决反爬问题,因…

20251207 新同学培训有感

今年开始给新同学进行科研培训,也是一种全新的尝试。大家的周报里反映了下面问题,我也记录一下:网课看完了,实践因为谷歌登录问题和时间关系尚未上手,课中有些新概念比较难理解,有些还涉及到线代的内容,需要提前…

2025 最新锂电池服务商 / 厂家 TOP5 评测!技术创新 + 品质保障权威榜单发布,赋能新能源产业高质量发展

随着新能源产业的蓬勃发展,锂电池作为核心能源部件,其性能与品质直接关系到下游应用的安全与效能。本榜单基于技术研发实力、行业适配能力、服务效能表现三大维度,结合市场反馈与行业数据,权威解析2025年五大锂电池…

OI 带给了我什么

观前提醒:本文有一定的负面情绪,不建议在心情不好时阅读。认真阅读了抑郁症治疗指南和支离破碎发言(七)。 我学 OI 时给自己定了个要求:不要在博客里写消极的东西。因为我认为,文章发出来一定是要给人看的。如果…

2025最新锂电池组装服务商/厂家TOP5评测!技术沉淀+定制方案权威榜单发布,赋能新能源产业升级发展

随着新能源产业的蓬勃发展,锂电池组装作为核心环节,其技术实力与服务品质直接关系到下游应用的性能与安全。本榜单基于技术研发实力、定制化服务能力、生产规模与品控体系三大维度,结合行业权威数据与客户反馈,对2…

text-embedding-3是什么?大模型Embedding技术科普

text-embedding-3是什么?大模型Embedding技术科普Embedding(嵌入向量)是现代 NLP 和 AI 系统的基础能力之一,它将文本转换为一组可计算的高维向量,用于捕捉语义关系。 随着 GPT 系列模型的升级,OpenAI 发布了全新…

博客园去除评论下面的广告

当前博客园的博客页面 ,“提交评论”下面有广告,如下。在页面定制css中添加以下代码: /*屏蔽底层广告*/.under-post-card,#under_post_card1,#under_post_card2{display:none; !important}即可去掉广告。

2025最新宁德锂电池组装服务商/厂家TOP5评测!技术创新+定制方案权威榜单发布,赋能新能源动力生态升级

随着新能源产业的蓬勃发展,宁德锂电池组装作为核心环节,其技术实力与生产能力直接关系到终端产品的性能表现。本榜单基于技术研发、定制方案、生产规模、质量管控四大维度,结合行业案例数据与客户反馈,权威解析202…

HRSword_v5.0.1.1 sysdiag.sys

HRSword_v5.0.1.1 sysdiag.sys sysdiag.sys 通过rsa 验证验证用户层程序 __int64 __fastcall check_file_140031E40(_UNICODE_STRING *path,unsigned __int64 *fsize,_QWORD *a3,_DWORD *a4,void *p_index,__int64 sha…

12.5 MyBatis

MyBatis用于快速连接数据库。使得数据库的操作更加简便

新同学培训有感

今年开始给新同学进行科研培训,也是一种全新的尝试。大家的周报里反映了下面问题,我也记录一下:网课看完了,实践因为谷歌登录问题和时间关系尚未上手,课中有些新概念比较难理解,有些还涉及到线代的内容,需要提前…

NAS 部署 OmniBox:全聚合一站式观影解决方案,轻松打造家庭影院

🐳部署指南 🎯 方案一:Docker 单容器 docker run -d \--restart unless-stopped \--name omnibox \-p 7023:7023 \-v $PWD/data:/app/data \lampon/omnibox:latest​$PWD​​: 当前终端命令所在目录。例如:/opt…

2025最新储能电池组装厂家TOP5评测!技术创新+定制方案权威榜单发布,赋能新能源产业高质量发展

随着新能源产业的蓬勃发展,储能电池组装作为关键环节,其技术实力与产品质量直接影响着下游应用的效能与安全。本榜单基于技术研发实力、行业适配能力、服务效能表现三大核心维度,结合行业权威数据与客户反馈,对202…

DFAT—Dual Focus-Attention Transformer for Robust Point Cloud Registration

创新点 (1)提出新框架,采用双层焦点注意力特征交互机制提升性能 (2)提出双空间一致性匹配模块,充分利用几何一致性来提升supperPoint匹配的质量。 (3)引入线性注意力模块,用于优化点特征。 流程 首先使用局部…

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

1.实验内容 (1)Web前端HTML 能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。 (2)Web前端javascipt 理解JavaScript的基本功能,理解DOM。 在(1)的基础上,编写JavaScript…

某中心语音AI前沿技术在SLT会议的研究突破

本文概述了某研究机构在IEEE口语语言技术研讨会上展示的多项语音AI研究成果,涵盖了模型量化、对比预测编码迁移学习、满足差分隐私的教师集成方法、跨语言注意力优化以及针对关键词唤醒和设备导向语音检测的改进技术。…

性能jmeter常用注意事项

性能jmeter常用注意事项jmeter容易混淆的概念: 线程组并不是并发数量:1.线程组不是并发数量,这个一定要知道,是代表用户数量。2.100个线程组,Ramp-up时间和性能结果没有关系,这个也要清楚100以内可以设置为1秒。…

2025最新电动车锂电池品牌/厂家TOP5评测!技术创新+安全效能权威榜单发布,赋能新能源出行生态升级

随着新能源汽车产业的蓬勃发展,电动车锂电池作为核心动力源,其技术实力与产品品质直接决定车辆性能与用户体验。本榜单基于技术研发深度、安全性能表现、定制化服务能力三大维度(恒续能源新增"规模化生产与全流…

Rabbit

将下载的文件放进010里面,发现最后有加密字符串联想题目,猜测是rabbit加密,在http://www.jsons.cn/rabbitencrypt/ 解密获得flag