首页 > 其他分享 >20222419 2021-2022-2 《网络与系统攻防技术》实验八实验报告

20222419 2021-2022-2 《网络与系统攻防技术》实验八实验报告

时间:2024-12-06 12:53:54浏览次数:8  
标签:username 用户 表单 密码 2021 2022 SQL 20222419 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.实验过程

(1)Web前端HTML

1.开启Apache服务

在kali 的浏览器中输入127.0.0.1,显示Apache默认网页,显示如下表示服务开启成功。

2.创建含表单的html文件
使用指令进入Apache目录下cd /var/www/html并新建20222419login.html文件


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>登录网页</title>
    <style>
        body {
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            margin: 0;
            font-family: Arial, sans-serif;
        }
        form {
            text-align: center;
            background-color: #f9f9f9;
            padding: 20px;
            border-radius: 10px;
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
        }
        h1 {
            margin-bottom: 20px;
        }
        label, input {
            display: block;
            width: 100%;
            max-width: 300px;
            margin: 10px auto;
        }
        input[type="button"] {
            width: 100px;
            margin: 20px auto;
        }
    </style>
</head>
<body>
    <h1>登录</h1>
    <form action="" method="post">
        <label for="username">用户:</label>
        <input type="text" id="username" name="username" required>
        <br>
        <label for="password">密码:</label>
        <input type="password" id="password" name="password" required>
        <br>
        <input type="button" name="login_btu" value="登录" onclick="login()">
    </form>
</body>
</html>

在浏览器中访问localhost/20222419login.html

3.理解表单、GET与POST方法

表单:HTML 表单使用 标签来定义。表单元素包括文本框、密码框、复选框、单选按钮、提交按钮等。这些元素用于接收用户输入。
get方法:
定义:GET 方法通过 URL 发送表单数据。表单数据被编码为 URL 参数附加在请求 URL 的末尾。
特点:
数据在 URL 中可见,安全性较低。
数据长度受限(通常为 2048 个字符)。
可用于书签,因为参数包含在 URL 中。
多用于获取数据而不是提交数据。
POST 方法
定义:POST 方法通过 HTTP 请求主体发送表单数据,而不是 URL。
特点:
数据在请求主体中不可见,安全性较高。
无数据长度限制。
不会被浏览器缓存。
适用于提交数据,如表单提交、文件上传等。
一般GET是只读,POST是写有交互

(2)Web前端JavaScript

1.理解JavaScript的基本功能,理解DOM

JavaScript是一种用于使网页动态和交互的编程语言,而DOM是表示网页结构的编程接口。
DOM 是表示 HTML 文档的编程接口。它允许脚本访问和更新文档的内容、结构和样式。

2.在(1)的基础上加入JavaScript代码,用于判断用户名或密码是否为空和在用户点击登陆按钮后回显“欢迎+输入的用户名”
代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>登录网页</title>
    <style>
        body {
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            margin: 0;
            font-family: Arial, sans-serif;
        }
        form {
            text-align: center;
            background-color: #f9f9f9;
            padding: 20px;
            border-radius: 10px;
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
        }
        h1 {
            margin-bottom: 20px;
        }
        label, input {
            display: block;
            width: 100%;
            max-width: 300px;
            margin: 10px auto;
        }
        input[type="button"] {
            width: 100px;
            margin: 20px auto;
        }
    </style>
    <script>
        function login() {
            const username = document.getElementById("username").value;
            const password = document.getElementById("password").value;
            if (username === "" || password === "") {
                alert("用户名或密码不能为空!");
                return;
            }
            document.write("欢迎 " + username);
        }
    </script>
</head>
<body>
    <h1>登录</h1>
    <form action="" method="post">
        <label for="username">用户:</label>
        <input type="text" id="username" name="username" required>
        <br>
        <label for="password">密码:</label>
        <input type="password" id="password" name="password" required>
        <br>
        <input type="button" name="login_btu" value="登录" onclick="login()">
    </form>
</body>
</html>

测试结果:
用户为空:

密码为空:

成功登录:

接下来尝试性攻击:
html:

script注入:

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

1.使用命令,开启MySQL服务

2.使用命令,进入root权限

3.输入show databases;,查看数据库基本信息。

4.建库

5.创建新用户

6.创建了一个名为loginuser的表并向loginuser表中插入了一条记录

7.将2419hxy数据库给2419hxy即可

8.刷新一下权限

9.登陆验证:成功

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

编辑welcome.php文件

<?php
// 检查是否有表单提交
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    echo "Hello World!!!<br>";

    // 获取表单数据
    $user = $_POST['username'];
    $pass = $_POST['password'];

    // 建立数据库连接
    $servername = "localhost";
    $username = "2419hxy";
    $password = "123456";
    $dbname = "2419hxy";

    // 查询数据库
    $sql = "SELECT * FROM loginuser WHERE uname = '$user' AND password = '$pass';";
    echo $sql;

    $conn = new mysqli($servername, $username, $password, $dbname);

    // 检查连接是否成功
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }
    echo "<br>Connected Successfully!<br>";

    // 执行查询
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
        echo "<br> Welcome {$user}! <br>";
    } else {
        echo "<br>登录失败,请检查用户名和密码是否正确。<br>";
    }

    // 关闭数据库连接
    $conn->close();
}
?>

html网页修改的地方:

登录失败:

登陆成功:

(5)最简单的SQL注入,XSS攻击测试

SQL注入

用户名为' or 1=1#,密码任意

SQL语法:

  • 在SQL查询中,' 用于表示字符串的开始和结束。
  • 2.or 是一个逻辑运算符,用于连接多个条件。
  • 1=1 是一个始终为真的条件,因为1总是等于1。
  • 是MySQL中的注释符号,表示该符号后面的内容将被忽略。

假设有一个SQL查询用于验证用户登录,例如:SELECT * FROM users WHERE username = '$user' AND password = '$pass';
如果攻击者在用户名字段中输入 ' or 1=1#,最终的SQL查询将变为:SELECT * FROM users WHERE username = '' or 1=1#' AND password = '$pass';
由于 1=1 始终为真,这个查询将返回所有用户的记录,而不管密码是什么。这使得攻击者能够绕过身份验证。

XSS攻击

在用户名中输入:,密码任意

(6)安装pikachu平台,并完成SQL注入、XSS、CSRF攻击。

SQL注入:or 1=1#

XSS:

CSRF攻击(get):

参考链接https://blog.csdn.net/2302_82189125/article/details/138549113
启动BurpSuite,登录账户后修改电话:

找到修改的值,复制这条请求然后在另一个页面打开

将地址改为dky

成功修改:

3.问题及解决方案

  • 问题1:pikachu的CSRF无法使用

  • 问题1解决方案:打开这个路径,找到第70行,把MYSQL_ASSOC改成MYSQLI_ASSOC,保存文件,刷新网页。

4.学习感悟、思考等

本次实验比较顺利,因为使用的pikachu是同学已经配置好了3个平台的win10虚拟机,所以在第六步实验的时候节省了很多时间。前面5个实验按部就班的完成,在html与php的时候遇到了一点小问题,就是输入密码后无法跳转,但是通过询问GPT给出了正确的解决方案。
这次实验内容涵盖了网页前端和后端开发的知识,以及与数据库交互的相关技能,整体流程比较清晰。从HTML和JavaScript的基础部分,到后端的MySQL和PHP,再到SQL注入与XSS攻击,每一步都让我有了新的收获。而前面5步的结果,可以直接使用pikachu这样的平台直接测试,大大节约了时间。

标签:username,用户,表单,密码,2021,2022,SQL,20222419,password
From: https://www.cnblogs.com/Taki16888/p/18588208

相关文章

  • 20222418 2024-2025-1 《网络与系统攻防技术》实验五实验报告
    1.实验内容(1)从www.besti.edu.cn、baidu.com、sina.com.cn中选择一个DNS域名进行查询,获取如下信息:DNS注册人及联系方式该域名对应IP地址IP地址注册人及联系方式IP地址所在国家、城市和具体地理位置PS:使用whois、dig、nslookup、traceroute、以及各类在线和离线工具进行搜集信......
  • 20222411 2024-2025-2 《网络与系统攻防技术》实验七实验报告
    1.实验内容1.1实践内容(1)简单应用SET工具建立冒名网站(2)ettercapDNSspoof(3)结合应用两种技术,用DNSspoof引导特定访问到冒名网站。1.2本周学习内容(1)ARP欺骗(ARPSpoofing)发送伪造ARP消息,对特定IP所对应的MAC地址进行假冒欺骗,从而达到恶意目的(2)ARP欺骗技术的应用场景利用......
  • 20222323 2024-2025-1 《网络与系统攻防技术》实验八实验报告
    1.实验内容(1)Web前端HTML能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。(2)Web前端javascipt在(1)的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎+输入的用户名”尝试注入攻击:利用回显用户名注入HTML及......
  • 20222321 2024-2025-1 《网络与系统攻防技术》实验七实验报告
    1.实验内容本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法。具体实践有(1)简单应用SET工具建立冒名网站(2)ettercapDNSspoof(3)结合应用两种技术,用DNSspoof引导特定访问到冒名网站。2.实验过程(1)简单应用SET工具建立冒名网站攻击机IP:192.168.58.160......
  • P7518 [省选联考 2021 A/B 卷] 宝石
    P7518[省选联考2021A/B卷]宝石Solution:首先我们注意到宝石收集器上的顺序是不变的,所以我们考虑将每个点的点权转化为其在宝石收集器上的排名(后文的权值都是这个意思)然后我们记录两个数组:\(f_1[u][i]和f_2[u][i]\)用来表示在rt->u这段路径上,权值为\(w[u]+2^i\)or\(w[......
  • 20222416 2024-2025-1 《网络与系统攻防技术》实验七实验报告
    1.实验内容1.1本周学习内容SocialEngineerToolkit(SET)是一个开源的社会工程学攻击工具包,旨在模拟和执行多种社会工程学攻击,例如钓鱼、恶意软件传播和其他形式的社会工程学攻击。SET由DavidKennedy(也被称为"ReL1K")开发,主要用于测试网络安全防御的有效性,并提供有关防御漏洞的......
  • 20222417 2024-2025-1 《网络与系统攻防技术》实验八实验报告
    1.实验内容1.1本周学习内容回顾本周学习了关于Web安全基础/前后端的知识,同时还学习了SQL注入攻击的原理以及XSS脚本攻击。1.2实验要求(1)Web前端HTML能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。(2)Web前端javascipt理解JavaScri......
  • 20222302 2024-2025-1 《网络与系统攻防技术》实验七实验报告
    1.实验内容本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法。具体实践有(1)简单应用SET工具建立冒名网站(2)ettercapDNSspoof(3)结合应用两种技术,用DNSspoof引导特定访问到冒名网站。2.实验过程2.1简单应用SET工具建立冒名网站2.1.1开启并配置Apach......
  • 20222320 2024-2025-1 《网络与系统攻防技术》实验八实验报告
    目录目录目录1.实验目标2.实验内容3.实验过程3.1Web前端HTML3.2Web前端javascipt3.3Web后端MySQL基础3.4Web后端PHP3.5最简单的SQL注入,XSS攻击测试3.6安装WebGoat平台,并完成SQL注入、XSS、CSRF攻击4.问题及解决方案5.学习感悟、思考等参考资料1.实验目标(1)Web前端HTML......
  • 2000-2021年 全各城市地铁开通线路长度、车站数、车辆数等统计数据
    2000-2021年全各城市地铁开通线路长度、车站数、车辆数等统计数据.r.rar  https://download.csdn.net/download/2401_84585615/90001923                           在过去的几十年中,中国城市轨道交通经历了迅猛的......