首页 > 其他分享 ># 20222403 2024-2025-1 《网络与系统攻防技术》实验八实验报告

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

时间:2024-12-05 14:20:57浏览次数:5  
标签:用户名 密码 用户 2024 2025 20222403 MySQL password 输入

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

2.1.1启动Apache
输入指令systemctl start apache2
开启Apache服务

在浏览器输入网址127.0.0.1

Apache开启成功
2.1.2编写含有表单的HTML
输入命令vi /var/www/html/2403.html
编辑创建一个登陆界面,HTML代码如下:

点击查看代码
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"></head>
 
<body>
    <h1>Login</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()">login</button>
    </form>
</body>
</html>


2.1.3浏览器打开编辑的网页
在浏览器访问网址 http://127.0.0.1/2403.html

2.2Web前端javascipt

在(1)的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎+输入的用户名”
2.2.1编写JavaScript验证用户名、密码的规则,在用户点击登陆按钮后回显“欢迎+输入的用户名”
输入命令vi /var/www/html/2403.html
添加以下代码:

点击查看代码
<script>
	function login() {
	    const username = document.getElementById("username").value;
	    const password = document.getElementById("password").value;

	    // 检查账号和密码是否为空
	    if (username === "" || password === "") {
	    alert("Username or password cannot be null!");
	    return;
	    }

	    // 检查密码是否正确
	    if (password !== "20222403") {
	    alert("Wrong password!");
	    return;
	    }

	    // 显示欢迎信息
	    document.body.innerHTML = "Welcome, " + username + "!";
      }
</script>


再次进入网页http://127.0.0.1/2403.html
当输入的账号或者密码为空,会提示 :username or password can not be null!

如果输入的密码错误,则会提示:Wrong password!

输入密码正确,则登陆成功,打印Welcome ***!

2.2.3尝试注入攻击:利用回显用户名注入HTML及JavaScript。
注入HTML,在网页的账号的文本框中输入 <h1> QX </h1> ,进行HTML注入,密码不变。结果如下:

注入JavaScript,在网页的账号的文本框中输入<script>alert("QX")</script>,密码不变。结果注入成功。

2.3Web后端:MySQL基础:正常安装、启动MySQL,建库、创建用户、修改密码、建表

2.3.1 安装、启动MySQL
systemctl start mysql //打开MySQL服务
systemctl status mysql //显示MySQL服务的当前目前状态

接下来进行:
service mysql start //启动MySQL服务
mysql_secure_installation //MySQL安全安装脚本
mysql -u root -p //登录到MySQL数据库
use mysql //切换大MySQL数据库
show databases; //列出MySQL服务器上的所有数据库

2.3.2创建用户、建库、修改密码、建表

  • 输入create user 'QX'@'%' IDENTIFIED BY '20222403';
    创建一个名为QX的用户,允许该用户从任何主机连接到数据库,并进行身份验证。

  • 输入create database 20222403QX;
    创建数据库,再输入use 20222403QX命令使用该数据库

  • 输入create table user (username VARCHAR(30),password VARCHAR(20));
    创建一个名为user的表,该表包含两个字段:username和password。
    使用insert into user values('QX','20222403');指令实现插入数据,插入操作成功后可以输入select * from user;命令查看数据表中的内容,

  • 输入如下命令,允许用户QX从任何主机连接到数据库,并对名为20222403QX的数据库拥有所有权限:
    GRANT ALL PRIVILEGES ON 20222403QX.* TO 'QX'@'%'; //授予用户所有权限
    FLUSH PRIVILEGES; //刷新权限

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

输入vi /var/www/html/20222403.php
创建一个php文件,编写代码具体如下:

点击查看代码
<?php  
  
// 设置数据库服务器的名称  
$servername = "localhost";  
  
// 设置连接数据库的用户名  
$username = "root";  
  
// 设置连接数据库的密码  
$password = "123456";  
  
// 设置要连接的数据库名  
$dbname = "20222403QX";  
 
// 使用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();  
?>

修改之前的2403.html文件,使用创建的PHP脚本来处理登录验证,
将表单的“action”属性指向“20222403.php”具体如下所示:

打开浏览器,访问网址http://127.0.0.1/2403.html
输入用户名:QX,密码:20222403。效果如下:

输入错误:

成功实现用户认证。

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

2.5.1SQL注入
在账号框中输入'or 1=1 #,密码随便输入。

结果:

数据库中本来没有这个账号,但是因为1=1始终为真,并且# 后面的内容被注释掉了,所以进行查询时返回users表中的所有记录,使得登录成功。SQL注入成功。
2.5.2 实现XSS攻击
在账号框中输入,密码随便输入 。

结果:

攻击成功。

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

先下载webgoat.jar文件,将文件拖入kali。
使用指令java -jar webgoat-2023.8.jar启动webgoat。

当所有的输出结束之后,在kali的浏览器中输入http://localhost:8080/WebGoat/login
进入网页,注册用户名和密码
进入主页面

2.6.1SQL注入
按顺序选择:A3->SQL injection(Intro)->9
选择“ Smith'”“ or ”和“ '1'='1”填入

观察查询语句,SELECT * FROM user_data WHERE first_name = 'John' AND last_name = '" + lastName + “’;要显示符合条件的人的所有信息,即使first_name且last_name为真,first_name已经固定,所以只需last_name为真。让格式成为‘Smith','1'='1’即可,成功获取信息。
2.6.2XSS攻击
选择左侧栏A3→Cross Site Sorpting→7
输入

提示框告警弹出,提示20222403XSS,攻击成功。
2.6.3CSRF攻击
选择左侧栏A10-> Cross-Site Request Forgeries→8

保持此网页打开,然后在另一个网页中根创建一个用户前缀为csrf-20222403qx。

用此新用户访问这道题目,点击提交solved看到题目已经通过

攻击成功!

3.问题及解决方案

  • 问题1:编写好web后端php文件后,从浏览器进入网址,输入用户名和密码,跳转后白屏。
  • 问题1解决方案: 仔细检查php文件中连接的数据库名,和html文件中 action语句的指向文件名。

4.学习感悟、思考等

通过SQL注入、跨站脚本(XSS)、跨站请求伪造(CSRF)等攻击手段,我深刻意识到,安全意识是防范Web安全威胁的第一道防线。无论是开发者还是用户,都需要时刻保持警惕,了解常见的安全漏洞和攻击手段,以便及时采取措施进行防范。

标签:用户名,密码,用户,2024,2025,20222403,MySQL,password,输入
From: https://www.cnblogs.com/20222403qx/p/18583932

相关文章

  • H7-TOOL自制Flash读写保护算法系列,为复旦微FM33LG和FM33LE制作使能和解除算法,支持在线
    说明:很多IC厂家仅发布了内部Flash算法文件,并没有提供读写保护算法文件,也就是选项字节算法文件,需要我们制作。实际上当前已经发布的TOOL版本,已经自制很多了,比如已经支持的兆易创新大部分型号,新唐的大部分型号等。但是依然有些厂家还没自制,所以陆续开始为这些厂家提供读写保护支持......
  • To B企业:2025继续打价格战,只有死路一条
    从双十一数不清的促销、满减还有消费券,到大模型厂商的“你低价,我免费”中可以窥见,最近几年,在产品泛滥、市场红利消失的困境中,“价格战”已从ToC卷到ToB赛道。企业纷纷裁员、调整业务方向,也说明了时下许多ToB企业焦虑的是,如何“活”下来。 面对市场增长放缓、供给侧“内卷”的......
  • C#/.NET/.NET Core优秀项目和框架2024年11月简报
    前言公众号每月定期推广和分享的C#/.NET/.NETCore优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的详细介绍、功能特点、使用方式以及部分功能截图等(打不开或者打开GitHub很慢的同学可以优先查看公众号推文,文末一定会附带项目和......
  • C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
    前言C#/.NET/.NETCore技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NETCore领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。欢迎投稿、推荐或自荐优质文章、项目、学习资源等......
  • 惊了!字节大模型“投毒”实习生,拿下NeurIPS 2024最佳论文
    offer捷报恭喜训练营的一位社招学员拿下携程大模型算法offer,涨幅40%。太戏剧了!攻击字节训练集群的实习生,居然刚刚获得了NeurIPS2024最佳论文奖?虽然看起来像爽文剧情,但这位高材生接下来的路,应该是难走了。刚刚,恶意攻击字节训练集群的实习生田柯宇,获得了NeurIPS2024......
  • 2024.12.4 周三
    2024.12.4周三Q1.1000给定01串,操作:选择l,r,将s[r]放到s[l]前:s[l]s[l+1]...s[r-1]s[r]->s[r]s[l]s[l+1]...s[r-1],代价为r-l+1/区间长度。问最小代价将01串由小到大排序。Q2.1300给定2行'<''>'组成的字符串,起点[1,1],可选4个方向走一步,然后必须根据所在字符走一步。问是......
  • 【每日一题】20241205
    【每日一题】已知非零向量\(\bm{a}\),\(\bm{b}\)满足\(|\bm{a}|=2|\bm{b}|\),且\((\bm{a}-\bm{b})\perp\bm{b}\),则\(\bm{a}\)与\(\bm{b}\)夹角的余弦值为_________.[题目来源:]设\(\alpha\)为锐角,若\(\cos\left(\alpha+\frac\pi6\right)=\frac45,则\sin......
  • 白鲸开源即将在Doris Summit Asia 2024展示新议题!
    一年一度的ApacheDoris峰会再次启航,DorisSummitAsia2024现已开启报名,将于2024年12月14日在深圳正式举办。此次峰会,将对实时极速、存算分离、湖仓一体、半结构化数据分析、向量索引、异步物化视图等诸多特性进行全方位解读,为现场观众带来一场技术与思维碰撞的盛宴。......
  • 【2024-12-04】治疗牙齿
    20:00我这一辈子什么都经历了,但我依然很乐观。喜怒哀乐,去经历就好了。能做啥就继续做啥,高高兴兴,这样心情就会很痛快。                                                 ......
  • 网络安全(黑客)——自学2024
    ......