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

news/2024/12/14 22:56:57/文章来源:https://www.cnblogs.com/unioc/p/18588598

1.实验内容

1.1 本周学习内容

前后端基础知识(CSS、JS、HTML、MYSQL等)例如前端页面的编写,MYSQL的注入方式,MYSQL语句;
网络攻防靶场(PiKachu、Webgoat、DVWA)的了解和基本使用。

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.1 Web前端HTML

HTML:超文本传输协议(HTTP)的设计目的是保证客户端与服务器之间的通信。HTTP 的工作方式是客户端与服务器之间的请求-应答协议。web 浏览器可能是客户端,而计算机上的网络应用程序也可能作为服务器端。
Form:用于收集用户输入的数据并提交给服务器进行处理。表单可以包含各种输入控件,如文本框、单选按钮、复选框、下拉列表、按钮等,帮助用户与网页进行交互。
GET - 从指定的资源请求数据。
POST - 向指定的资源提交要被处理的数据。
GET 提交参数一般显示在 URL 上,POST 通过表单提交不会显示在 URL 上,POST 更具隐蔽性。

在kali终端输入如下命令启动Apache2:

systemctl start apache2 //启动
systemctl status apache2 //查看状态

可以看到Apache成功启动,以及启动状态

在浏览器输入127.0.0.1,可以看到Apache的启动界面

输入

systemctl stop apache2

来停止Apache服务

可以看到成功关闭。然后开启apache
然后在kali终端输入vi /var/www/html/20222416.html命令,编辑创建一个登陆界面。HTML代码具体如下:

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"></head><body><h1>登录</h1><form  method="post"><font>账号:</font><input type="text" name="username" id="username"><br><font>密码:</font><input type="password" name="password" id="password"><br><button onclick="login()">提交</button></form>
</body>
</html>

输入后的结果如下:

访问127.0.0.1下的html打开网页,网页成功运行在了Apache上

2.2 Web前端javascipt

javascript:
JavaScript 是因特网上最流行的浏览器脚本语言。JavaScript 被数百万计的网页用来改进设计、验证表单、检测浏览器、创建cookies,以及更多的应用。

HTML DOM
HTML DOM 是 W3C 标准(是 HTML 文档对象模型的英文缩写,Document Object Model for HTML)。HTML DOM 定义了用于 HTML 的一系列标准的对象,以及访问和处理 HTML 文档的标准方法。通过 DOM,可以访问所有的 HTML 元素,连同它们所包含的文本和属性。可以对其中的内容进行修改和删除,同时也可以创建新的元素。HTML DOM 独立于平台和编程语言。它可被任何编程语言诸如 Java、JavaScript 和 VBScript 使用。

编写JavaScript如下:

<script>
function login(){
const username=document.getElementById("username").value;
const password=document.getElementById("password").value;
if (username === "" || password === "") {  alert(" username or password can not be null!");  return;  
}  else if (password !== "20222416") {   alert(" Your password is wrong!");  return;   
}else { 
document.write("欢迎"+username) 
}
}
</script>

不输入用户名和密码:

输入用户名但是错误密码:

输入用户名和正确的密码:

接下来尝试注入攻击,首先尝试注入标题

可以看到注入成功,文字变得很大

接下来注入script

成功注入,会弹出警告框

2.3 Web后端

kali有自带的数据库,在终端输入如下代码开启mysql:

systemctl start mysql       


通过mysql_secure_installation命令安装安全脚本,安装完成后进入数据库:

输入create user 'czc'@'%' IDENTIFIED BY '20222416';命令创建一个名为czc的用户,允许该用户从任何主机('%' 表示任何主机)连接到数据库,并使用密码20222416进行身份验证。

输入create database 20222416czc;命令创建数据库,再输入use 20222416czc;命令使用该数据库

输入create table user (username VARCHAR(30),password VARCHAR(20));命令创建一个名为user的表,使用insert into user values('czc','20222416');插入数据,插入操作成功后输入select * from user;命令查看数据表中的内容

2.4 Web后端:编写PHP网页,连接数据库,进行用户认证

kali终端输入vi /var/www/html/20222416.php命令创建一个php文件

<?php  // 设置数据库服务器的名称  
$servername = "localhost";  // 设置连接数据库的用户名  
$username = "root";  // 设置连接数据库的密码  
$password = "123456";  // 设置要连接的数据库名  
$dbname = "20222416czc";  // 使用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文件:

    <form method="post" action="20222416.php"><h2>登录</h2><label for="username">name:</label><input type="text" id="username" name="username" ><label for="password">password:</label><input type="password" id="password" name="password" ><input type="submit" value="提交"></form>

测试登录(用户名czc,密码20222416),成功登录

输入错误的密码:

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

SQL注入:

注入成功

XSS攻击:

攻击成功

2.6 安装DVWA或WebGoat平台,并完成SQL注入、XSS、CSRF攻击

我在windows10虚拟机上安装了dvwa平台

SQL注入:
输入User ID显示对应的name,并且输入的ID值在URL栏中

存在注入点。查看当前数据库的版本号,及当前数据库名

id=12313' union select version(),database() -- qwe


注入成功

XSS攻击:
观察界面,当选择不同的标签时,URL栏中的default也会发生变化

传入xss代码

<script>alert(1)</script>

CSRF攻击:
这个页面是让我们更改密码

但是当我们更改密码成功后url栏的参数中会包含输入的密码和确认的密码,说明我们在网站上输入的信息是会在url栏这里进行一个传输执行
只要控制url栏里传入的参数,就能够不在网站内执行更改密码
更改url的参数:

http://127.0.0.1/dvwa/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change#

只需要在原来的url基础上修改新密码和确认密码的参数即可
原来的页面是密码不匹配状态

修改后,页面跳转到了dvwa的更改密码界面,攻击成功

网站的本意是在网站内更改密码,通过控制url的传参就能使我能在网站之外执行更改密码的操作,那么当知道一个网站有csrf漏洞后也可以通过构造url的方式让别人点击执行他意想之外的行为。

3.问题及解决方案

  • 问题1:在使用mysql_secure时,提示找不到命令,提示输入y安装后没有反应
  • 问题1解决方案:使用提示的apt install 进行安装,即可安装成功。

4.学习感悟、思考等

本次实验是网络攻防的最后一次实验。我了解了kali上的Apache2启动方式以及如何查看状态,知道了script注入、SQL注入和xss攻击的方式,熟悉了php的编写方式。在实验前我已经尝试过了常见的靶场使用方式,因此这一次实验使用dvwa靶场攻击对我而言算是一次回顾。这次实验为我将理论与实践相结合,巩固了我上课所学的攻击知识,加深了我对各类漏洞类型的理解。将来我会继续提升自己的网络攻防水平,以更好地应对网络安全挑战。

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

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

相关文章

转载:【AI系统】CPU 计算本质

本文将深入探讨 CPU 的计算性能,从算力的敏感度和不同技术趋势中分析影响 CPU 性能的关键因素。我们将通过数据和实例,详细解释 CPU 算力的计算方法、算力与数据加载之间的平衡点,以及如何通过算力敏感度分析来识别和优化计算系统中的性能瓶颈。此外,我们还将观察服务器、G…

转载:【AI系统】CPU 指令集架构

我们知道,计算机指令是指挥机器工作的指示和命令,程序就是一系列指令按照顺序排列的集合,执行程序的过程就是计算机的工作过程。从微观上看,我们输入指令的时候,计算机会将指令转换成二进制码存储在存储单元里面,然后在即将执行的时候拿出来。那么计算机是怎么知道我们输…

转载:【AI系统】Kernel 层架构

推理引擎的 Kernel 层通常是推理引擎中用于执行底层数学运算的组件。在神经网络模型推理过程中,需要对大量数据进行高效的数学运算,如矩阵乘法、卷积、池化等。Kernel 层就是实现这些运算的核心部分,它直接影响着推理引擎的速度和效率,因此本文将会重点介绍 Kernel 层相关的…

2024数据库国测揭晓:安全与可靠的新标准

2024年数据库国测的结果,于9月份的最后一天发布了。 对于数据库行业的从业者来说,国测是我们绕不过去的坎儿。那么什么是国测?为什么要通过国测,以及国测的要求有哪些? 国测自愿平等、客观公正什么是国测? 国测 自愿平等、客观公正 什么是国测? 国测是中国信息安全测评中…

排队下单生成自增排序号码的问题场景分析

今天和同事去地铁口下面的一个面店吃饭,大家桌面扫码后下单,发现自己会有一个取餐号,我的是39,同事的是40多。 这当然很容易想到,这个取餐号码是自增的,这种场景再熟悉不过了,在以往我们去饭店吃饭拿到的号因为是在柜台口头下单,服务员扫码支付,所以小票机器打出来的单…

传知代码-改进贪心算法(NGSOR)

一、算法背景及意义 (一)背包问题背景 背包问题是组合优化领域中的经典问题,具有广泛的实际应用场景,如资源分配、项目投资决策等。扩展简化折扣{0 - 1}背包问题(ESD{0 - 1}KP)是背包问题的一种变体,它在传统背包问题的基础上增加了一些复杂的约束条件,如物品的折扣系数…

远程控制、分享屏幕软件有哪些?首选ToDesk稳定又安全

随着现如今人们常用设备的增多,查看或操作另外设备中画面信息的需求也随之加增。虽然近几年应用市场上的远程控制和屏幕分享软件已有很多,但各有利弊且也并非全部都是安全、易用的;针对选择困扰,本篇内容,小编就为大家简要讲解几款比较知名远程共享屏幕产品的特点。ToDesk…

记录_信号完整性上机报告

《信 号 完 整 性》实验报告实验工程图:2.1阻抗突变处的反射:一、 实验目的本实验旨在研究信号在遇到传输线阻抗突变时产生的反射现象。通过设置不同阻抗的传输线,模拟和分析信号反射系数的变化,观察反射对信号波形的影响。实验的核心目标是理解阻抗突变如何影响信号传播,…

分享一个类似mqttx的mqtt测试工具MQTTSHARP

工具名称:MQTTSharp v1.0 使用环境:NET8初步实现了以下功能 1、多线程连接和接收数据 2、接收数统计 3、多线程发送 4、接收分主题和汇总两张展示方式 下一版将增加 1、离线接收 2、断线重连 3、发送统计 4、其他样式美化下载地址https://files.cnblogs.com/files/weipt/MQTTS…

推荐一款轻量级且强大的 Elasticsearch GUI : elasticvue

推荐一款轻量级且强大的 Elasticsearch GUI : elasticvue 很多同学都是用过 Elasticsearch 的 GUI 工具 Kibana ,但 Kibana 相对比较重,这篇文章,笔者推荐推荐一款轻量级且强大的 Elasticsearch GUI : elasticvue 。1 下载安装 进入: https://github.com/cars10/elasticv…

Android 设置沉浸式状态栏

原文地址: Android 设置沉浸式状态栏-Stars-One的杂货小窝标题所说的沉浸式状态栏实际就是底部有背景图,而状态栏是沉浸效果(可以在背景图上面展示的),如下面的这种效果:官方API实现 官方新版本出了个api,名为enableEdgeToEdge(),方便我们使用 这种方法主要适用Activity的整个背…

工作CASE_1 Hold Lot 已经Release但是Hold记录为空

HOLD LOT已经Release,但是对应HOLD记录的Release时间是空的说明: DWT_HOLD_LOT 的Hold Lot Hold Event(Hold,EditHoldComment,Release),且每个Event都为一条记录,每条记录都有对应的RELEASE_EVENT_TIME,HOLD_SYS_ID,HOLD_RELEASE HOLD LOT已经Release,但是对应HOLD记录的…