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

news/2025/12/7 23:10:55/文章来源:https://www.cnblogs.com/gczy/p/19292334

1.实验内容

(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.1html相关

在Kali执行sudo systemctl start apache2完成启动,sudo systemctl status apache2验证运行状态,可见成功启动。
image
在自带的火狐浏览器输入localhost,可见也正常运行。
image
用命令sudo vim /var/www/html/20232419.html创建编辑网页,并输入以下代码

点击查看代码
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><title>登录表单</title>
</head>
<body><div id="welcomeMessage"></div><h2>用户登录(带JS验证)</h2><form name="myForm" action="" method="get" onsubmit="return validateForm()">用户名: <input type="text" name="username" placeholder="请输入用户名"><br><br>密码: <input type="password" name="password" placeholder="请输入密码"><br><br><input type="submit" value="登录(GET)"></form><h2>用户登录(POST 方法)</h2><form action="20232422_auth.php" method="post">用户名: <input type="text" name="username" placeholder="请输入用户名"><br><br>密码: <input type="password" name="password" placeholder="请输入密码"><br><br><input type="submit" value="登录(POST)"></form><script>function validateForm() {var username = document.forms["myForm"]["username"].value;var password = document.forms["myForm"]["password"].value;if (username === "") {alert("用户名不能为空!");return false;}if (password === "") {alert("密码不能为空!");return false;}if (password.length < 6) {alert("密码长度不能少于6位!");return false;}return true;}window.onload = function() {const urlParams = new URLSearchParams(window.location.search);const username = urlParams.get('username');if (username) {document.getElementById("welcomeMessage").innerHTML = "欢迎回来," + username + "!";}};</script>
</body>
</html>
在浏览器输入var/www/html/20232419.html登陆可见如下页面:

image

2.2Web前端JavaScript开发

2.2.1开发

加入JavaScript代码,设定验证的规则:用户名不能输入为空、密码长度不能小于6位
image
image
成功执行代码
image
正常输入也行

2.2.2HTML/JavaScript注入攻击尝试

image
用户名输入框输入<h1>li</h1>,提交后页面回显大号字体用户名,注入成功

2.3Web后端MariaDB(MySQL)基础操作

2.3.1MariaDB安装与启动

命令sudo apt install mariadb-server -y安装MariaDB,sudo systemctl start mariadb启动服务,sudo systemctl enable mariadb设置开机自启,systemctl status mariadb,确认服务处于运行状态
image

2.3.2建立数据库基础结构

命令sudo mysql -u root打开数据库,命令ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD('wgws1966');为用户root设置密码;接着CREATE DATABASE IF NOT EXISTS my_db;创建my_db数据库,SELECT DATABASE();查看当前选中的数据库,但未切换库,返回NULL;CREATE USER 'llh'@'localhost' IDENTIFIED BY 'wgws1966';创建用户llh,密码为wgws1966,并且用GRANT ALL PRIVILEGES ON my_db.* TO 'llh'@'localhost';赋予用户llh的my_db数据库的所有权限。
image

FLUSH PRIVILEGES;,刷新权限配置,使授权立即生效;SHOW GRANTS FOR 'llh'@'localhost';,查看webuser的权限列表,确认对websec_db的权限已正确授予;USE my_db;,切换到websec_db数据库;CREATE TABLE IF NOT EXISTS users (...),在websec_db中创建users表,定义id(自增主键)、username(唯一非空)、password(非空)、email(可选)的字段结构;DESCRIBE users;,查看users表的字段类型、约束等结构信息,确认表创建符合预期。。
image

INSERT INTO users (username, password, email) -> VALUES -> ('admin','admin123','admin@123.com'), -> ('lilinhong19','lilin113','lilin19@123.com');插入2条测试用户数据(包含admin、longhaoran、test三个账号),执行结果提示 “2 rows affected”,说明数据无重复、无警告,成功插入;用SELECT * FROM users;查询users表的全部记录,结果显示2条完整的用户信息(含id、username、password、email字段),确认数据插入正确且完整。
image

2.4Web后端PHP用户认证开发

2.4.1相关安装

sudo apt install php libapache2-mod-php php-mysql -y安装PHP及MySQL扩展组件,sudo systemctl restart apache2重启Apache,使PHP扩展配置生效。
image

2.4.2 PHP用户认证脚本编写与测试

创建20232419_db_config.php,写入数据库连接信息(主机、用户名、密码、库名);将数据库配置文件的权限设置为 “所有者可读可写、其他用户只读”(权限 644),既确保 Apache 服务能正常读取连接配置,又限制非所有者的修改权限,提升文件安全性;创建20232419_auth.php,接收表单提交的用户名/密码,拼接SQL语句查询users表,返回登录成功/失败提示;并设置权限。
image
两个文件代码分别如下:

点击查看代码
<?php
$servername = "localhost";
$dbUsername = "llh";
$dbPassword = "wgws1966";
$dbName = "my_db";$conn = new mysqli($servername, $dbUsername, $dbPassword, $dbName);
if ($conn->connect_error) {die("MariaDB连接失败: " . $conn->connect_error);
}
$conn->set_charset("utf8");
?>
点击查看代码
<?php
require_once "20232419_db_config.php";if ($_SERVER["REQUEST_METHOD"] !== "POST") {die("非法访问!仅允许POST方法提交。");
}$username = trim($_POST["username"]);
$password = trim($_POST["password"]);if (empty($username) || empty($password)) {die("用户名或密码不能为空!");
}$sql = "SELECT id, username, email FROM users WHERE username = '$username' AND password = '$password'";
$result = $conn->query($sql);if ($result->num_rows > 0) {$user = $result->fetch_assoc();echo "<h1 style='color: green; text-align: center; margin-top: 100px;'>";echo "登录成功!欢迎你:" . $user["username"] . "!<br>";echo "你的邮箱:" . $user["email"];echo "</h1>";
} else {echo "<h1 style='color: red; text-align: center; margin-top: 100px;'>";echo "登录失败!用户名或密码错误。";echo "</h1>";echo "<p style='text-align: center;'>执行的SQL查询:" . $sql . "</p>";
}$conn->close();
?>

错误方式登录如下
image

错误的用户名以及密码结果如下
image
正确的如下
image

2.5SQL 注入与XSS攻击测试

2.5.1 SQL注入测试

注入操作:在POST表单用户名输入框输入llh' OR '1'='1,密码随便写(但要满足之前设置的不小于6位),可见成功绕过用户认证登录系统,验证SQL注入漏洞。
image

2.5.2 XSS攻击测试

存储型
通过MariaDB向users表插入含<script>alert("存储型XSS:李林鸿")</script>的用户名,成功登录
image
image

2.6DVWA平台安装与漏洞测试

2.6.1 DVWA平台部署

sudo git clone https://github.com/digininja/DVWA.git命令克隆,sudo apt install git php-gd php-mbstring php-xml php-curl -y安装 DVWA 运行所需的工具(git)及 PHP 扩展(gd、mbstring 等,用于支持图片处理、字符串操作等功能);系统自动下载并完成安装,确保 DVWA 的依赖环境配置完整。(太长了)
image

编辑config.inc.php,配置数据库连接信息(用户llh、密码wgws1966、库名my_db),设置目录权限为www-data。
image

image
访问http://192.168.175.129/DVWA/创建数据库,使用默认账号admin/password登录成功。
image
image
image

2.6.2典型漏洞复现

SQL Injection:点击DVWA Security,设置安全级别为Low。
image
输入1' OR 1=1 --,卡在这了,但是都设置好了,不知道为什么会这样
image
XSS (Reflected):输入<script>alert("DVWA反射型XSS:20232419")</script>,触发弹窗
image
CSRF:将密码均输入123456并点击change,地址栏出现http://192.168.175.129/DVWA/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change#
之后打开新的页面粘贴此地址进入地址栏,可以发现不需要填密码,直接访问这个 URL 就完成了密码修改。
image

3问题以及解决方案

4学习感悟

这次试验好麻烦,但让我明白了比如注入攻击等方法模式,并且我认为如果严加检查用户输入在一定程度上会减少这些攻击的成功的可能性。

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

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

相关文章

某中心语音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

White Album

将下载的图片放进随波逐流里面,修复高度会发现图片下面有一个条形码在https://products.aspose.app/barcode/zh-hans/recognize#google_vignette 识别条形码获得flag

102302149赖翊煊数据采集与融合技术第四次作业

作业一 代码及其结果展示点击查看代码 from selenium import webdriver from selenium.webdriver.firefox.service import Service from selenium.webdriver.firefox.options import Options from selenium.webdriver.…

Homework

打开下载的文件,ctrl+f搜索flag,发现一部分flag将文件放进随波逐流里面,binwalk分离文件打开分离的网页,一个一个网页找在里面搜索}发现另一部分flag完整flag:moectf{0h_U_f1nd_m3!}

深入解析:【Rust 探索之旅】Rust 库开发实战教程:从零构建高性能 HTTP 客户端库

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

案例库--工抵协议系承包人主张优先受偿权的合法方式

案例库--工抵协议系承包人主张优先受偿权的合法方式2025-12-07 22:52 wwx的个人博客 阅读(0) 评论(0) 收藏 举报1. (2022)晋民再123号 海某建设公司诉丰某房地产开发公司建设工程施工合同纠纷案 裁判要旨:建设工…

251207周天,今天是周天

周末总体过得很快 现在的周末并不能给我很放松的感觉,反而是感觉周末过得很快。 今天上午去帮人练了球,中午吃了饭 下午感觉也没干啥,睡了一会儿。 晚上 才来工作,加油

完整教程:和AI用TDD结对编程:1天开发一个完整的 Python 库

完整教程:和AI用TDD结对编程:1天开发一个完整的 Python 库2025-12-07 22:46 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !importa…

如何保证 RocketMQ 消息不丢失

🚀 一句话总览:消息不丢 = 生产端不丢 + Broker 不丢 + 消费端不丢 你要牢牢记住:任何 MQ 最容易丢的不是 Broker,而是 Producer 和 Consumer。消息可靠性必须三段一起设计: Producer(发送) Broker(存储) …

排列组合

排列组合 加法原理 完成某件事情有 \(n\) 类方法,其中第 \(i\) 类方法有 \(a_i\) 种方案。 则总共有 \(\sum_{i=1}^na_i\) 种方案。 乘法原理 完成某件事有 \(n\) 个步骤,第 \(i\) 个步骤有 \(a_i\) 种方案。 则共有…

2025 最新西双版纳旅游服务商TOP5推荐!地接社/旅行社五大优质品牌,资源实力 + 服务口碑权威榜单发布,专业赋能构筑美好旅行体验

随着西双版纳成为国内外游客向往的热带旅游目的地,市场对优质旅行社的需求持续攀升。本榜单基于资源整合力、服务专业度、产品创新力、客户口碑四大维度,结合行业协会数据与游客真实反馈,权威解析2025年五大西双版纳…

12.4 maven简介

maven仓库分类 本地仓库:自己计算机上的一个目录 中央仓库:maven团队维护的全球唯一的一个仓库 远程仓库:公司团队自己搭建的仓库 自己本地有jar就用;无就下过来; alt+insert能快捷导入jar包 groupid artifactId …

vs2026远程调试linux

vs2026远程调试linux网上都搜索不到有关教程,自己摸索了一下。 vs2026的安装步骤直接跳过,创建项目时选择cmake的项目在Linux系统中,如果是使用yum的包管理(比如centos),下载一些软件,远程调试需要使用 sudo yu…

深入理解 RocketMQ 核心机制

🚀 一、RocketMQ 核心机制 = “日志 + 顺序写 + 消费位点 + 多副本 + 动态路由” 一句话:RocketMQ 是一个高性能、可扩展、牢靠不丢消息的分布式消息系统,本质是一套“持久化日志 + 分布式调度”的组合拳。 要理解…

DMY 周作业 47 简要题解

G 数据结构优化 DP 板。暑假的时候做过,直接离散化 + BIT 就行了。比较无聊就不说了。 #include <bits/stdc++.h> #define fi first #define se second #define eb(x) emplace_back(x) #define pb(x) push_back…

2025最新西双版纳旅行社TOP5推荐!资源整合+服务升级权威榜单发布,品质赋能重构雨林旅游体验

随着西双版纳成为国内外游客向往的热带旅游目的地,优质旅行社的选择成为提升旅行体验的关键。本榜单基于资源掌控力、服务专业性、产品创新度三大维度(红土地文旅集团新增“品牌影响力”维度),结合行业协会数据与游…