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

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

时间:2024-12-06 11:21:58浏览次数:2  
标签:username Web 2024 2025 20222417 SQL password 输入

1.实验内容
1.1 本周学习内容回顾
本周学习了关于Web安全基础/前后端的知识,同时还学习了SQL注入攻击的原理以及XSS脚本攻击。
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
2.1.1 安装并启动Apache
在kali终端输入如下命令:
netstat -tupln | grep 80
systemctl start apache2
netstat -aptn

在浏览器中访问网址http://127.0.0.1 ,发现Apache开启成功,如下图所示:

2.1.2 编写一个含有表单的HTML
在kali终端输入vi /var/www/html/20222417.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/20222417.html

2.2 Web前端javascipt
2.2.1 编写JavaScript验证用户名、密码的规则,在用户点击登陆按钮后回显“欢迎+输入的用户名”
代码如下:

<script>
function login(){
const usrname=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 !== "20222417") {   
    alert(" Your password is wrong!");  
    return;   
}
 
else { 
document.write("Welcome! "+ usrname) 
}
}
</script>

2.2.2 浏览器打开编辑的网页
打开浏览器,访问网址 http://127.0.0.1/20222417.html
若输入的账号或者密码为空,会提示 username or password can not be null!

若输入的账号密码正确,则会提示welcome+用户名

2.2.3 尝试注入攻击
注入HTML,在网页的账号的文本框中输入

ywx

,进行HTML注入,密码不变

最后会提示一级界面的设置:

注入JavaScript
在账号的文本框中输入“”进行JavaScript注入,密码不变,最后会出现ywx的提示框,如下图所示:


成功注入!
2.3 Web后端:MySQL基础:正常安装、启动MySQL,建库、创建用户、修改密码、建表
2.3.1 打开kali中安装并启动MySQL
kali有自带的数据库,在终端输入如下代码:
systemctl start mysql
systemctl status mysql

再输入:
service mysql start
mysql_secure_installation
mysql -u root -p
use mysql
show databases;

2.3.2 创建用户
输入create user 'ywx'@'%' IDENTIFIED BY '20222417';命令创建一个名为ywx的用户,允许该用户从任何主机连接到数据库,并使用密码 20222417 进行身份验证。具体如下图所示:

2.3.3 建库
输入create database 20222417ywx;创建数据库,再输入use 20222417ywx命令使用该数据库,

具体如下图所示:

2.3.4 建表
输入create table user (username VARCHAR(30),password VARCHAR(20));命令创建一个名为user的表,该表的两个字段分别为:username和password。具体如下图所示:

输入insert into user values('ywx','20222417');插入数据,后输入select * from user命令查看数据表中的内容,具体如下图所示:

2.3.5 授权
输入如下命令,允许用户ywx从任何主机连接到数据库,并拥有20222417ywx的数据库拥有所有权限:
GRANT ALL PRIVILEGES ON 20222417ywx.* TO 'ywx'@'%';
FLUSH PRIVILEGES;

2.4 Web后端:编写PHP网页,连接数据库,进行用户认证
2.4.1 在kali终端输入vi /var/www/html/20222417.php创建一个php文件,代码具体如下:

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(); ?>


2.4.2 对之前的20222417.html文件进行修改,使用创建的PHP脚本来处理登录验证

2.4.3 浏览器打开编辑的网页
打开浏览器,访问网址http://127.0.0.1/20222417.html
使用的登录账号和密码(ywx、20222417)正确,效果如下:

错误如下:

2.5 最简单的SQL注入,XSS攻击测试
2.5.1 实现SQL注入
在账号的文本框中输入20222417' or 1=1 #,密码输入11111

数据库中没有存在这个账号,但是由于设置的条件为1=1,始终为真,并且# 后面的内容被注释掉了,所以这个查询将返回users表中的所有记录,而不是仅返回username为20222417的记录,由上图可知,SQL注入成功。
2.5.2 实现XSS攻击
在账号的文本框中输入,密码随便输入:

2.6 安装Pikachu或类似平台,并完成SQL注入、XSS、CSRF攻击
本次实验使用的是webgoat平台。
首先在文件夹中打开cmd,然后输入java -jar webgoat-2023.5.jar

当输出结束时,打开浏览器,在搜索栏中输入:
http://localhost:8080/WebGoat/login
登录成功

2.6.1 SQL注入
选择左侧栏A3→SQL Injection(Intro)→9号
根据提示中的SQL查询语句,选择“ Smith’ ”“ or ”和“ ‘1’=‘1 ”填入

成功获取信息。
由于or '1' = '1'始终为真,所以整个条件表达式first_name = 'John' and last_name = 'Smith' or '1' = '1'也会始终为真,不管first_name和last_name的实际值是什么。
2.6.2 xss攻击
选择左侧栏A3→Cross Site Sorpting→选择7号
输入 ,提示20222417XSS

2.6.3 CSRF攻击
选择左侧A10 Cross-Site Request Forgeries→3号→点击Submit Query
点击Submit Query按钮后,跳转页面,可发现flag值为null

返回测试页面,按下F12打开网页的html工作台,找到以下代码:

在一个html文件中将代码粘贴并增加内容:

打开这个html文件:

发现flag正确值为31591
成功测试

3.问题及解决方案
问题一:无法安装mysql

解决方案:输入提示中给出的命令
问题二:无法进入判断用户是否正确,html代码如下:

解决方案:由于原代码中增加了判断条件if,导致无法进入下一步,将代码改为下列代码即可:

4.学习感悟、思考等
本次实验,在完成这一系列的Web开发和安全学习任务后,我深刻体会到了Web技术的复杂性和多样性。从前端的HTML和JavaScript到后端的MySQL和PHP,每一步都让我对Web应用的构建有了更深入的理解。通过安装和配置Apache服务器,我掌握了Web服务器的基本操作。学习HTML让我能够构建网页的基本结构,而表单和GET/POST方法的学习则让我理解了数据如何在客户端和服务器之间传输。安装和启动MySQL,以及进行数据库的管理和操作,让我对数据库的工作原理有了实际的体验。这些操作对于后端开发至关重要,也是数据持久化的基础。
总的来说,这些学习经历让我认识到了作为一名Web开发者,不仅要掌握技术知识,还要具备安全意识。在开发过程中,我们必须始终考虑到安全性,以保护用户的数据和隐私。

标签:username,Web,2024,2025,20222417,SQL,password,输入
From: https://www.cnblogs.com/123ywx12323/p/18588726

相关文章

  • 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......
  • 12.8实验三:JFinal极速开发框架实验(2024.11.29日完成)
    实验三:JFinal极速开发框架实验(2024.11.29日完成)一、实验要求  任务一:了解Maven及其使用方法,总结其功能作用(占20%)     任务二:学习JFinal框架,基于Maven建立JFinal工程,并对JFinal框架功能进行总结介绍(占30%)     任务三:基于JFinal完成一个简单的学生信息管理系统(......
  • 2024.12.5——攻防世界xff_referer
    知识点:XFFreferer一、知识点详情1.XFF(1)介绍X-Forwarded-For(简称XFF)是一个HTTP请求头部字段,它用于表示HTTP请求的客户端IP地址,尤其是当请求通过一个中介代理或负载均衡器时。该字段的值通常是一个逗号分隔的IP地址列表,其中第一个IP地址是最初连接到中介代理或......
  • YOLOv9涨点优化:轻量化注意力 | 单头注意力模块,并行结合全局和局部信息提高准确度| SHV
      ......
  • 20241205:3001. 捕获黑皇后需要的最少移动次数
    现有一个下标从 1 开始的 8x8 棋盘,上面有 3 枚棋子。给你 6 个整数 a 、b 、c 、d 、e 和 f ,其中:(a,b) 表示白色车的位置。(c,d) 表示白色象的位置。(e,f) 表示黑皇后的位置。假定你只能移动白色棋子,返回捕获黑皇后所需的最少移动次数。......
  • 前端面试题(20241205)
    1.Vue如何检测数组变化1.方法重写(push、pop、shift、unshift、splice、sort和reverse)。2.使用Vue.set或vm.$set(对于直接通过索引设置数组项的操作例如arr[index]=newValue)。3.数组长度变化。4.响应式转换。2.Vue的父子组件生命周期钩子函数执行顺序父组件先初......
  • 2024-2025-1 20241318 《计算机基础与程序设计》第十一周学习总结
    这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK11这个作业的目标<计算机网络网络拓扑云计算网络安全WebHTML,CSS,JavascriptXML>作业......
  • CCF认证-202409-03 | 补丁应用(未通过)
    前言:    这道题难度过于夸张?并且根据过往的CCFCSP认证第三题的通过率,我就没奔着通过去写,只是想测试一下定时1小时能摸到几分。这道题用时1小时28分钟(带完善),分数0。        所以CCF认证时在没有走投无路或者有80%以上把握就千万不能做这道题,第四题都比这个要......
  • Diary - 2024.12.05
    哥我真的佩服你了,,,你说物理老师上完课说的给一两天整理的意思又没有可能是指拿时间整理一下然后等老师来讲,而不是做完作业直接开跑看课,然后让大家追赶你的步伐,,,有点流汗了,感觉现在一天学了好多脑子要爆掉了,然后我还得快点做作业来跟上你看课的速度,,,哥我错了,我是菜比行吗,,,在您的引......