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

news/2024/12/4 17:26:41/文章来源:https://www.cnblogs.com/Margarita0/p/18586805

1.学习内容
1.Web前端:负责开发用户所看到的内容。
前端语言:HTML、JavaScript(JS):与Java没有关系,与JSP两回事,CSS。
Web前端框架:Vue.js(中国人尤雨溪)、Bootstrap(Twitter)、Layui(极简单)、Element-UI(基于Vue.js2.0,饿了么)、Angular(Google)……
2.Web后端:主要使用各种库,API,Web服务等技术搭建后端应用体系,确保各种Web服务接口之间的正确通信。比如处理前端用户发起的请求,各种业务逻辑的操作,最后与数据库交互,完成增、删、改、查等数据库操作。
后端语言:C、Java、PHP、Python、C#
3.数据库:增删改查,、create/select/delete/update/insert………………
SQLServe、MySql、Oracle。
4.WEB安全
(1)SQL注入、(2)XSS跨站脚本攻击(Cross-site Scripting (XSS))、(3)CSRF:CSRF(Cross-site request forgery)
5.Burpsuite工具
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攻击。
3.实验过程
3.1Web前端HTML
3.1.1 正常安装、启停Apache
1.打开Apache服务service apache2 start,并在浏览器输入 127.0.0.1,如果可以打开Apache的默认网页,则表示开启成功!
Kail:192.168.28.150


2.查看Apache状态sudo systemctl status apache2

显示开启。
3.关闭apachesudo systemctl stop apache2


成功关闭。
3.1.2对HTML,表单,GET与POST方法的理解
1.HTML表单(Form)是用户输入数据的重要工具,而GET与POST方法是提交表单数据的两种主要方式。
2.GET方法:GET方法是从服务器获取数据的一种请求方法。
工作原理:当使用GET方法提交表单时,表单数据将附加到URL的末尾,以查询字符串的形式发送给服务器。
3.POST方法:POST方法是向服务器发送和处理敏感或大量表单数据的一种请求方法。
工作原理:当使用POST方法提交表单时,表单数据将被放置在HTTP请求的正文中发送到服务器。这样,表单数据不会出现在URL中。
3.1.3设计一个简单的html网页
1.进入html的文件夹cd /var/www/html
2.创建html文件touch 20222407.html 

2.进入编辑页面,将html代码粘贴进去vi 20222407.html
代码一

Welcome to login
<h1>^_^今天你开心了吗-_-!!!</h1><form action="/submit" method="POST"><label for="username">用户名:</label><br><input type="text" id="username" name="username" required><br><br><label for="email">邮箱:</label><br><input type="email" id="email" name="email" required><br><br><label for="password">密码:</label><br><input type="password" id="password" name="password" required><br><br><label for="gender">性别:</label><br><input type="radio" id="male" name="gender" value="male" checked><label for="male">男</label><br><input type="radio" id="female" name="gender" value="female"><label for="female">女</label><br><br><label for="interests">兴趣:</label><br><select id="interests" name="interests[]" multiple><option value="coding">编程</option><option value="reading">阅读</option><option value="music">音乐</option><option value="sports">运动</option></select><br><br><label for="message">留言:</label><br><textarea id="message" name="message" rows="4" cols="50"></textarea><br><br><button type="submit">提交</button>
</form>


3.再次开启Apache服务service apache2 start

4.使用浏览器打开制作的网页,在浏览器输入localhost/20222407.html

5.可提交表单,实现跳转

6.跳转后,没有.php文件,直接NOT Found

3.2Web前端javascipt
3.2.1理解JavaScript的基本功能,理解DOM
JavaScript是一种基于对象和事件驱动的编程语言,而DOM是一种与平台和语言无关的接口。
JavaScript的基本功能:
动态内容展示:通过修改HTML元素和CSS样式,JavaScript能够实现网页内容的动态更新。
用户交互体验:响应用户的鼠标点击、键盘输入等操作,实现表单验证、按钮点击等功能。
数据处理计算:提供丰富的内置函数和对象,支持复杂的数据操作和逻辑判断。
网络请求交互:可以发起网络请求,与服务器进行数据交换,实现异步加载和数据更新。
跨平台适应性:由于其解释性脚本语言的特性,JavaScript可以在多种平台上运行,无需编译。
DOM的作用:
访问文档结构:DOM提供了对整个HTML文档的树形结构访问,每个节点都代表一个HTML元素或文本项。
操作元素属性:通过DOM,可以读取和修改HTML元素的属性,如id、class、style等。
事件处理:DOM允许为HTML元素添加事件监听器,响应用户的操作,如点击、滚动、输入等。
创建删除元素:可以使用DOM API动态地在文档中创建新的元素或删除现有的元素。
遍历文档树:DOM提供了遍历文档树的方法,可以访问和操作树中的每个节点。
总的来说,JavaScript作为一门功能强大的脚本语言,它不仅能够实现页面的动态效果,还能处理复杂的逻辑和数据。而DOM作为JavaScript操作HTML文档的标准API,使得开发者能够轻松地对页面结构和内容进行动态控制。两者的结合极大地推动了Web前端开发的发展,为用户提供了更加丰富和互动的网络体验。
3.2.2编写JavaScript验证用户名、密码的规则,在用户点击登陆按钮后回显“欢迎+输入的用户名”
1.我补充的JavaScript 验证函数:
验证规则:
用户名至少3个字符且不能为空。
密码至少6个字符且不能为空。
2.编辑20222407.html 更改代码(我更改失败,所以删除重作)
代码二

登录表单![](https://img2024.cnblogs.com/blog/3528075/202412/3528075-20241204171446940-257879206.png) 4.会出现LTY的提示框,如下图所示: ![](https://img2024.cnblogs.com/blog/3528075/202412/3528075-20241204171500559-1088406619.png) 3.3Web后端:MySQL基础:正常安装、启动MySQL,建库、创建用户、修改密码、建表 3.3.1打开kali中安装并启动MySQL 1.打开MySQL服务systemctl start mysql 2.显示MySQL服务的当前目前状态systemctl status mysql ![](https://img2024.cnblogs.com/blog/3528075/202412/3528075-20241204171508242-727790461.png) 2.启动MySQL服务service mysql start 3.MySQL安全安装脚本mysql_secure_installation 4.登录到MySQL数据库mysql -u root -p 默认密码:password。 ![](https://img2024.cnblogs.com/blog/3528075/202412/3528075-20241204171517268-1015228935.png) 3.3.2建库、建表 1.创建数据库create database tq_db; 使用它use tq_db; ![](https://img2024.cnblogs.com/blog/3528075/202412/3528075-20241204171524714-795070957.png)

3.用create table 表名 (字段设定列表);建立数据库表,并插入数据:
用户名为20222407lty,密码为2004。
create table login (username VARCHAR(20),password VARCHAR(20));
insert into login values('20222407lty','2004');

3.查询login表中的数据select * from login;

成功啦!
3.3.3创建用户、修改密码
1.在MySQL中增加新用户grant select,insert,update,delete on tq_db.* to lintianyu@localhost identified by "20222407";
这也同时完成了将对该数据库的所有表的select,insert,update,delete权限授予新用户。

2.退出quit
3.登入新用户mysql -u lintianyu -p

恭喜登陆成功。
3.4Web后端:编写PHP网页,连接数据库,进行用户认证
3.4.1创建一个php文件vi /var/www/html/20222407.php
代码四
Welcome -

PHP20222305

登陆界面

用户名:
密    码:


3.4.2修改之前的20222407html文件,使用创建的PHP脚本来处理登录验证,即将
20222407html文件的action修改为20222407.php
3.4.3 验证
1.输入正确的用户名和密码进行登陆,表示欢迎。用户名:20222407lty,密码:2004


2.输入错误密码

3.5 SQL注入,XSS攻击测试
3.5.1SQL注入
用户名' or 1=1#

这是一个永真式,不管输入的用户名和密码正确与否,都能登录成功。

3.5.2XSS攻击测试
用户名

提示“1”,成功了。

3.6安装DVWA或WebGoat平台,并完成SQL注入、XSS、CSRF攻击。
3.6.1 安装dvwa平台)
安装完成后在浏览器输入http://127.0.0.1/dvwa

3.6.2调整难度到low

3.6.3SQL注入攻击
SQL Injection——Union注入
1.sql语句猜测1

First name即回显的First name在数据库中对应的字段,Surname同理假设表名为admin。
2.获取数据库名1' UNION SELECT 1,database() from information_schema.schemata#

数据库名:dvwa
3.获取表名1' UNION SELECT 1,table_name from information_schema.tables where table_schema='dvwa'#

有两个表:guestbook、users
4.获取列名1' UNION SELECT 1,column_name from information_schema.columns where table_schema='dvwa' and table_name='users'#

总共有8列:user_id、first_name、last_name、user、password、avatar、last_login、failed_login
5.获取数据1' UNION SELECT 1,group_concat(user,0x3a,avatar) from users#
(以user和avatar为例子;为了避免分不清各个数据,使用":",即0x3a进行分隔。)

user:admin对应的avatar:/dvwa/hackable/users/admin.jpg,后面的以此类推
3.6.4 XSS攻击
1.选中反射型xss

2.查看页面源码ctrl+u

发现“submit”
3.在输入框输入TQ,点击submit。

再次打开页面原码,发现TQ,嵌入进去了。

4.输入

再次打开页面原码,发现服务器没对我们的输入进行过滤,直接将内容传给了浏览器,浏览器将解析成脚本标签,alert当成js脚本代码执行了。

5.选中存储型xss

6.先点击ClearGuestbook,清空一下

7.再message中注入:

8.发现Name不能为空,补齐为“TQ”点击Sign

3.6.5 CSRF攻击
原理:服务器收到修改密码的请求后,会检查参数password_new与password_conf是否相同,如果相同,就会修改密码,并没有任何的防CSRF机制

1.观察没有修改的URL

2.输入新的密码之后就会在地址栏出现相应的链接(是get型所以提交的参数会显示),并提示密码修改成功:点击Change,查看上方的链接,将修改后的密码显示了出来:
20222407lty

3.此时在同一个浏览器中打开新的页面将上面的链接粘贴到地址栏并进行访问,此时成功访问:

4.在新打开的页面地址栏修改链接的密码为20222305(原本为20222305TQ)并回车,新页面会显示密码修改成功,此时退出登录后重新登录会发现登录密码变为新的20222407而20222407lty无法登陆:
5.点击上方的Test,尝试原密码20222407lty,发现无法登录。

6.输入更改后的密码20222407,显示登陆成功。

  1. 问题及解决方案
    问题:dvwa一开始解压后用不了
    解决办法:后来发现自己找的教程少了一步没有更改配置文件。

  2. 学习感悟、思考等

近期通过手动搭建 web 网页,进行 JavaScript、php 编写以及 mysql 运用,对 web 知识体系展开了全面回顾。往昔在 web 设计课程中遗留的诸多困惑,竟在亲手实践时逐一化解,深刻领悟到“纸上得来终觉浅,绝知此事要躬行”的真谛。Web 技术绝非仅靠讲解与理论学习就能掌握,唯有亲自动手实践,方能收获更多。

同时,我对 XSS、CSRF 攻击和 SQL 注入等常见的基本 Web 攻击形式有了深入认知与切身体会。这些攻击手段极为巧妙,只需在基本语句中精准插入特定字符,精心构造攻击语句,便能达成攻击目的。这使我意识到在安全设计环节必须慎之又慎,一些看似平常无奇的设计背后,或许就潜藏着可被恶意利用的漏洞。例如 XSS 攻击,竟能通过在表单中直接写入 Html 语言或 Script 脚本轻易实施,而其根源往往是网页编写时那些毫不起眼的简短代码行,像 document.write()之类。

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

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

相关文章

第四章 决策树

4.1 基本流程 决策过程的最终结论对应了所希望的判定结果。 决策过程中提出的每个判定问题是对某个属性的测试。 一个决策树包含一个根节点,若干个内部节点和若干个叶节点。叶节点对应决策结果。其他每个结点则对应于一个属性测试;每个结点包含的样本集合根据属性测试的结果被…

hhdb数据库介绍(10-36)

管理 分片方案在线变更 提供对业务表的表类型、分片规则、分片字段、分片所属数据节点四个维度进行在线变更的支持。业务表在变更期间不会锁表,业务可对表进行正常的IUD操作。 分片方案在线变更记录页面显示已执行完成或正在执行的变更任务记录,正在变更的任务允许通过【取消…

智慧车辆算法视频分析服务器渣土车偷拉乱倒识别算法:”智慧城市守卫者“

随着城市化进程的加速,渣土车在建筑、道路等施工领域扮演着至关重要的角色。然而,由于管理和监控手段的不足,渣土车的偷拉乱倒现象日益严重,给城市环境造成了很大影响。针对这一问题,我们来探讨一下视频分析服务器在渣土车偷拉乱倒识别中的应用及相关算法。一、渣土车偷拉…

hhdb数据库介绍(10-33)

管理 数据归档 归档记录查询 功能入口:“管理->数据归档->归档记录查询”需要确保配置的归档用户对数据归档规则所在的逻辑库具备CREATE权限,以及对原数据表具有所有权限。 清理归档数据 (一)功能入口:“管理->数据归档->清理归档数据”清理已归档的数据,但不…

实用free的音频格式转化工具

最近写的博客居然是7年前,今天给小朋友下载歌曲时在网上搜了好多格式转化的方法,挨个尝试了之后发现好多是收费的,或者不支持某种格式转化的,但还是大浪淘沙到一些实用的工具。分享给大家参考,同时也督促自己不断学习。 一、在线格式转换工具Zamzar网址:https://www.zamz…

记录第一次参加开源的流程

记录第一次参加开源贡献开源步骤选择开源项目Fork该开源项目(即拷贝一份代码到自己的远程仓库如gitee或github)在本地使用git将自己远程仓库下的代码clone下来自己本地修改git add . (将修改后的代码添加到缓存区)git commit -m "修改信息" (为此次的修改添加备注)gi…

Bootstrap-table表格组件和jquery版本兼容问题

jquery版本引起的bootstrap-table组件表格未能渲染 最近写一个带分页的页面,使用了bootstrap-table组件,表格数据怎么都渲染不出来,控制台打印出了下面的信息:一时有点懵,确认js代码及bootstrap-table用法没有任何问题后,将数据放入以前可正确渲染的页面中,表格正常渲染…

Vulnhub Connect-The-Dots

0x01:端口扫描 主机发现 nmap -sn 192.168.231.0/24全端口扫描 nmap --min-rate 10000 -p- 192.168.231.144开放21ftp,80http,111rpcbind,2049nfsrpcbind 主要的作用是将网络上的 RPC 服务与其对应的端口进行关联。它充当了客户端和服务器之间的桥梁,使得客户端可以通过服…

办公自动化处理展示

1、自动绘制地质图2、自动出高速公路路面自检资料3、自动出高速公路路基自检资料4、自动出高速公路T梁预制自检资料5、自动出高速公路桩基资料自检资料6、自动出高速垫石自检资料7、自动化操作网页8、CAD编程提取点坐标9、扫描的PDF自动识别文字或表格10、pdf文件自动拆分并命名…

使用脚本发布订阅

建使用本地分发服务器】/************************【使用本地分发服务器配置发布】***********************/ -- SqlServer 2008 R2 -- https://technet.microsoft.com/zh-cn/library/ms151860(v=sql.105).aspx use master go -- 服务器上是否已安装分发…

form标签中的button未指明type时默认的类型是什么

form中button未指明type时,默认type为submit 遇到了一个奇怪的现象:一个按钮打开一个Bootstrap模态框,模态框有几个表单字段和两个按钮,两个按钮可以关闭模态框,点击其中一个按钮关闭模态框后页面居然刷新了。 仔细检查后发现点击的按钮未指明type,浏览器把按钮type默认为…

kubernetes菜鸟学习笔记

目录环境准备dockerminikube启动minikube其他命令kubectlkubernetes dashboardKubernetesPodDeployment自动扩缩容升级版本版本回退探针探针配置项启动探针(startupProbe)就绪探针 (readinessProbe)存活探针(livenessProbe)配置示例Service示例Service和Ingress的区别Ingress示…