20222402 2024-2025-2 《网络与系统攻防技术》实验八实验报告

news/2024/12/19 15:42:46/文章来源:https://www.cnblogs.com/nonosuperman/p/18616908

1.实验内容
1.1本周学习内容
Web 前端:负责开发用户所看到的内容。
(1)HTML
(2)JavaScript(Js)
(3)CSS
(4)Web 前端框架
Web 后端:主要使用各种库,API,Web 服务等技术搭建后端应用体系,确保各种 Web服务接口之间的正确通信。比如处理前端用户发起的请求,各种业务逻辑的操作,最后与数据库交互,完成增、删、改、查等数据库操作。
(1)C
(2)Java
(3)PHP
(4)Python
(5)C#
1.2实验内容及要求
(1)Web前端HTML
能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。
(2)Web前端javascipt
理解JavaScript的基本功能,理解DOM。
在(1)的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎+输入的用户名”
尝试注入攻击:利用回显用户名注入HTML及JavaScript。
(3)Web后端:MySQL基础:正常安装、启动MySQL,建库、创建用户、修改密码、建表
(4)Web后端:编写PHP网页,连接数据库,进行用户认证
(5)最简单的SQL注入,XSS攻击测试
(6)安装DVWA或WebGoat平台,并完成SQL注入、XSS、CSRF攻击。
2.实验过程
2.1Web前端HTML
2.1.1启停Apache
暂停Apache服务

查看Apache服务

启动Apache服务

查看Apache服务

2.1.2HTML,表单,GET与POST方法
HTML
HTML(HyperText Markup Language,超文本标记语言)是用于创建网页和网上应用的标准标记语言。它描述了网页的结构。HTML文档由一系列的元素构成,这些元素通过标签来定义,比如, , , <body>, <h1>, <p>等。每个标签通常都有一个开始标签和一个结束标签,结束标签在标签名前加上斜杠(/)。例如,<p>是段落的开始标签,</p>是段落的结束标签。HTML文档还可以包含CSS(层叠样式表)来定义元素的外观和布局,以及JavaScript来添加动态功能。<br> 表单<br> 在HTML中,表单(Form)是用来收集用户输入的。它可以包含多种输入元素,如文本框、复选框、单选按钮、下拉菜单、提交按钮等。表单允许用户输入数据,然后可以将这些数据发送到服务器进行处理。表单是通过<form>标签来定义的,并且可以通过设置不同的属性来控制其行为,比如action属性指定了表单数据提交到的URL,method属性指定了数据提交到服务器时所使用的HTTP方法(通常是GET或POST)。<br> GET方法<br> GET是HTTP协议中用于请求数据的一种方法。当使用GET方法提交表单时,表单中的数据会被附加到URL的末尾,形成查询字符串。这种方法适合用来请求数据而不是提交数据以改变服务器状态,因为它是非幂等的(即,多次相同的GET请求应该返回相同的结果,不改变服务器状态)。GET请求的数据是可见的(出现在URL中),并且由于URL的长度限制,可以发送的数据量有限。<br> POST方法<br> POST是HTTP协议中用于提交数据到服务器的一种方法。与GET不同,POST方法将数据包含在HTTP请求的body中,而不是附加到URL。这使得POST请求可以发送更多的数据,并且数据不会在URL中显示,因此更加安全(尽管它并不提供真正的加密)。POST请求通常用于提交表单数据以更新服务器上的资源,因为它是幂等的(即,多次相同的POST请求可能会改变服务器状态,但每次请求的效果应该是相同的,假设没有其他请求同时修改资源)。<br> 2.1.3编写一个含有表单的HTML<br> <img src="https://img2024.cnblogs.com/blog/3528121/202412/3528121-20241219102039425-241619627.png" alt="" loading="lazy"><br> 代码如下:<br> `<!DOCTYPE html></p> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>登录表单

<div class="form-container"><h2>登录</h2><form action="#" method="post"><label for="username">用户名:</label><input type="text" id="username" name="username" required placeholder="请输入用户名"><label for="password">密码:</label><input type="password" id="password" name="password" required placeholder="请输入密码"><input type="submit" value="提交"></form>
</div>
` 2.2Web前端javascipt 2.2.1JavaScript的基本功能,DOM JavaScript的基本功能: ①嵌入动态文本于HTML页面:JavaScript可以动态地生成和修改HTML页面的内容,从而实现页面的动态效果。 ②对浏览器事件做出响应:JavaScript能够监听和响应各种浏览器事件,如点击、键盘输入、鼠标移动等,从而提供交互式的用户体验。 ③读写HTML元素:通过JavaScript,可以读取和修改HTML文档中的元素,包括它们的属性、样式和内容。 ④数据验证:在数据被提交到服务器之前,JavaScript可以进行前端验证,确保用户输入的数据符合预期的格式和范围。 ⑤检测访客浏览器信息:JavaScript能够获取访客的浏览器类型、版本、操作系统等信息,从而根据不同的浏览器环境提供不同的内容或功能。 ⑥控制cookies:JavaScript可以创建、读取、修改和删除cookies,这对于实现用户会话管理、个性化设置等功能非常重要。 ⑦服务器端编程:基于Node.js技术,JavaScript也可以用于服务器端编程,实现后端逻辑和数据处理。 DOM:DOM是W3C(万维网联盟)组织推荐的处理可扩展标志语言的标准编程接口。它允许程序和脚本动态地访问和更新文档的内容、结构和样式。 2.2.2在(1)的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎+输入的用户名” 输入合法的用户名和密码 ![](https://img2024.cnblogs.com/blog/3528121/202412/3528121-20241219105222999-273519103.png) 密码为空: ![](https://img2024.cnblogs.com/blog/3528121/202412/3528121-20241219105311392-711560359.png) 代码如下: `登录表单
<div class="form-container"><h2>登录</h2><form id="loginForm" action="#" method="post" onsubmit="return validateForm()"><label for="username">用户名:</label><input type="text" id="username" name="username" required placeholder="请输入用户名"><label for="password">密码:</label><input type="password" id="password" name="password" required placeholder="请输入密码"><input type="submit" value="提交"></form><div id="welcomeMessage" class="message"></div>
</div><script>// 表单验证函数function validateForm() {var username = document.getElementById('username').value;var password = document.getElementById('password').value;var welcomeMessage = document.getElementById('welcomeMessage');// 用户名和密码不能为空if (username === '' || password === '') {alert('用户名和密码不能为空!');return false;}// 简单的用户名验证:长度在3个字符之上if (username.length < 3 ) {alert('用户名长度应在3个字符之上!');return false;}// 简单的密码验证:长度在6到20个字符之间if (password.length < 6 || password.length > 20) {alert('密码长度应在6到20个字符之间!');return false;}// 如果验证通过,回显欢迎信息document.write('欢迎' + username);return false; // 防止表单提交}
</script>
` 2.2.3尝试注入攻击:利用回显用户名注入HTML及JavaScript。 注入HTML ![](https://img2024.cnblogs.com/blog/3528121/202412/3528121-20241219105658275-1349625100.png) ![](https://img2024.cnblogs.com/blog/3528121/202412/3528121-20241219105635700-1967187281.png) 注入JavaScript ![](https://img2024.cnblogs.com/blog/3528121/202412/3528121-20241219105543506-294427467.png) 2.3Web后端 启动数据库服务并安装安全脚本 ![](https://img2024.cnblogs.com/blog/3528121/202412/3528121-20241219121933214-365353423.png) ![](https://img2024.cnblogs.com/blog/3528121/202412/3528121-20241219122034363-1889232880.png) 使用root用户连接数据库 ![](https://img2024.cnblogs.com/blog/3528121/202412/3528121-20241219122109593-1171508992.png) 查看数据库 ![](https://img2024.cnblogs.com/blog/3528121/202412/3528121-20241219122431653-923506393.png) 创建一个名为gbc的用户 ![](https://img2024.cnblogs.com/blog/3528121/202412/3528121-20241219122501809-1130503140.png) 创建并使用数据库 ![](https://img2024.cnblogs.com/blog/3528121/202412/3528121-20241219122648859-1729966146.png) 建立包含studentid、password两个字段表user,插入用户名和密码,并查看 ![](https://img2024.cnblogs.com/blog/3528121/202412/3528121-20241219122856676-419841003.png) 2.4Web后端:编写PHP网页,连接数据库,进行用户认证 创建php文件 ![](https://img2024.cnblogs.com/blog/3528121/202412/3528121-20241219123250749-329107709.png) 代码如下 `// 设置数据库服务器的名称
$servername = "localhost";

// 设置连接数据库的用户名
$username = "root";

// 设置连接数据库的密码
$password = "20222402";

// 设置要连接的数据库名
$dbname = "20222402gbc";

// 使用mysqli创建一个新的数据库连接
$conn = new mysqli($servername, $username, $password, $dbname);

// 检查连接是否成功
if ($conn->connect_error) {
// 如果连接失败,输出错误信息并停止脚本执行
die("连接数据库失败: " . $conn->connect_error);
}

// 使用null合并运算符从POST请求中获取用户名,如果POST请求中没有该值,则将其设置为空字符串
$username = $_POST['username'] ?? '';

// 使用null合并运算符从POST请求中获取密码,如果POST请求中没有该值,则将其设置为空字符串
$password = $_POST['password'] ?? '';

// 创建一个SQL查询语句,用于从user表中查找与给定用户名和密码匹配的用户
$sql = "SELECT * FROM user WHERE username = '$username' AND password = '$password'";

// 执行SQL查询并获取结果
$result = $conn->query($sql);

// 检查查询结果中的行数是否大于0,即是否找到了匹配的用户
if ($result->num_rows > 0) {
// 如果找到了匹配的用户,输出登录成功的消息
echo " 欢迎 ! 登陆成功!";
} else {
// 如果没有找到匹配的用户,输出用户名或密码错误的消息
echo "用户名或密码错误!";
}

// 关闭数据库连接
$conn->close();
?>
创建HTML文件 代码如下


登录



    <label for="password">password:</label><input type="password" id="password" name="password" ><input type="submit" value="提交">
</form>

`
用户名和密码正确

用户名和密码错误

2.5最简单的SQL注入,XSS攻击测试

成功

SQL注入:
用户名输入,提交

2.6在DVWA完成SQL注入、XSS、CSRF攻击
SQL注入
输入User ID显示对应的name,并且输入的ID值在URL栏中

判断是否存在注入

存在注入点

XSS攻击
URL栏中的default为传输的值,利用default传入xss攻击

CSRF攻击:
修改一次密码,看到URL栏有新密码

直接改变URL栏中password的值

直接修改成功
3.问题及解决方案

  • 问题1:在网页和数据库连接时失败
  • 问题1解决方案:没有启动Apache服务,重新启动后成功
    4.学习感悟、思考等
    本次实验涵盖了Web前端与后端的基础知识,以及常见的Web安全漏洞攻击(如SQL注入、XSS攻击、CSRF攻击等)。通过对这些概念的学习与实际操作,我对Web开发和Web安全的理解有了更为深入的认识。
    通过本次实践操作,我对Web的前端,后端以及攻防技术有了更深入的了解。在DVMA平台上,我能够更直观地了解SQL注入、XSS、CSRF等常见漏洞的利用方法,以及如何通过各种手段进行攻击与防御。
    总之,通过这次实验,我不仅学会了Web开发的基本技能,还深入了解了Web安全的基本知识和常见漏洞攻击的原理与防范措施,对课上学习的内容有了更深入的理解。

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

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

相关文章

Shor’s Algorithm

本文延续RSA与ECC-ElGamal。 Shor算法(Shor’s Algorithm)几乎是最为出名的量子算法,原因就在于其可以在多项式的时间复杂度内完成大数的质因分解问题。也由此,基于质因分解难题的RSA算法受到了严重的量子威胁,而RSA算法正是在日常生活之中最为常用(如HTTPS协议、SSH协议…

翻页代码

using System.Collections;using System.Collections.Generic;using UnityEngine; public class NewBehaviourScript : MonoBehaviour{ //成员变量 //SerializeField凡是显示在Inspector(检查器) 中的属性都同时具有Serialize功能(序列化的意思是说再次读取Unity时序列化的变…

5款Win电脑好用的备忘录app推荐盘点

对于大多数的打工人来说,在使用Win电脑办公时,是需要随手记录一些琐事的,特别是工作上的事情,如果不随手记下来,很有可能会忘记。今天给大家介绍5款亲测好用的备忘录app,可以在电脑上使用,也可以实时同步到手机端,非常方便。 1、钉钉便签 作为一款办公软件,它不仅可以…

珠海盈致:智能制造赋能企业,解锁全新价值维度

智能制造是信息技术与制造技术的深度融合,经历了从数字化制造到“互联网+制造”,再到新一代智能制造的三个阶段。它是一个大系统,贯穿于产品、制造、服务的全生命周期,由智能产品、智能生产、智能服务三大功能系统,以及工业智联网和智能制造云两大支撑系统组成。 智能制造…

【路由交换】华为ENSP配置网口桥接

ENSP桥接物理网口,需要创建Cloud云对象,并在云对象中完成接口绑定配置绑定物理网口绑定UDP端口配置端口映射模拟器和cloud对象连接网络连接测试

基于QT+MQTT的实时视频监控

MQTT(Message Queuing Telemetry Transport)是一种基于发布/订阅模式的轻量级通信协议,广泛应用于物联网领域。它允许设备通过极少的代码和有限的带宽实现实时可靠的消息服务。MQTT协议的核心在于其三部分组成的控制报文:固定报头、可变报头和有效载荷。mqtt中的一些名词解…

在 K8S 中创建 Pod 是如何使用到 GPU 的:nvidia device plugin 源码分析

本文主要分析了在 K8s 中创建一个 Pod 并申请 GPU 资源,最终该 Pod 时怎么能够使用 GPU 的,具体的实现原理,以及 device plugin、nvidia-container-toolkit 相关源码分析。1.概述 在 两篇文章中分别分享了在不同环境如何使用 GPU,以及在 k8s 中使用 GPU Operator 来加速部…

unity 协程

协程 异步执行 必须带关键字 yield return 0 ;程序暂时挂起

修改网站统计图标的位置,网站统计图标位置调整指南

修改网站统计图标的位置通常涉及编辑网站的HTML和CSS文件。以下是详细的步骤:确定修改需求:明确需要将统计图标移动到的具体位置。备份网站文件:在进行任何修改之前,建议先备份网站的所有文件。连接到FTP服务器:使用FTP客户端(如FileZilla、WinSCP等)连接到你的服务器。…

C语言浮点数相等判定

等价关系 按照离散数学的等价关系叙述,集合 \(X\) 上的关系 \(R \subset (X, X)\) 如果满足反身性: \((x, x) \in R, \forall x \in X\),自己等于自己 对称性: 如果 \((x, y) \in R\),则 \((y, x) \in R\),我等于你,则你也等于我 传递性: 如果 \((x, y) \in R\) 且 \((y, …

怎么修改网站admin密码,如何安全地修改网站后台管理系统的admin密码,提升安全性,防止未授权访问

修改网站后台管理系统的admin密码是确保网站安全的重要措施。以下是详细的修改步骤:登录后台管理系统:使用当前的admin账户登录网站后台管理系统。 确保使用的是最新的浏览器,以获得最佳的用户体验。进入用户管理页面:在后台管理系统中,找到“用户管理”或“管理员管理”选…

PbootCMS 织梦支付宝接口常见错误

错误代码 ILLEGAL_PARTNER:更新 PARTNER 值和安全校检码。 确认 PARTNER 值和安全校检码对应且有效。 确认 PARTNER 开通了所需的服务。错误代码 HAS_NO_PRIVILEGE:登录签约的支付宝账号,查询接口服务类型和合同生效时间。 确认服务名称、合同生效时间、合作者身份ID和校验码…