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

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
能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。
HTML:超文本标记语言
表单:可将用户输入的数据传到后端
GET:将传送的数据装入url参数中
POST:将数据封装在请求正文中
安装启动Apache

查看Apache状态

停止Apache

查看Apache的状态

进入html文件夹,并创建html文件

编辑html文件

启动apache

访问html文件

(2)Web前端javascipt
理解JavaScript的基本功能,理解DOM。
javascript基本功能;
表单验证:JavaScript 可以在用户提交表单之前,对表单中的数据进行验证。例如,检查用户在文本框中输入的电子邮件地址是否符合正确的格式。通过获取表单元素的值,并使用正则表达式来验证数据。
响应用户操作:能够对用户的各种操作做出响应,如鼠标点击、鼠标移动、键盘按键等。例如,为一个按钮添加点击事件监听器,当用户点击按钮时,改变网页上某个元素的内容或样式。
动态数据显示:JavaScript 可以从服务器获取数据(例如通过 AJAX 技术),并实时更新网页内容。假设要从一个简单的 API 获取一些数据并显示在网页上。
DOM 操作:通过文档对象模型(DOM),JavaScript 可以动态地创建、修改和删除网页元素。
基本动画实现:使用 JavaScript 可以实现简单的动画效果,如元素的移动、淡入淡出等。以元素的平滑移动为例,可以通过定时改变元素的位置来实现动画。
基于 CSS 过渡和动画的控制:JavaScript 还可以控制 CSS 中的过渡(transition)和动画(animation)属性。例如,通过添加或移除类名来触发元素的 CSS 动画。
数据计算与处理:JavaScript 可以对各种数据进行计算和处理。例如,在一个简单的计算器应用中,可以获取用户输入的两个数字,然后进行加、减、乘、除等运算。
本地存储数据:可以使用浏览器的本地存储(localStorage 或 sessionStorage)来存储和读取数据。例如,存储用户的偏好设置或表单数据,以便下次访问网站时使用。
DOM:文档对象模型(Document Object Model)是一个将 HTML 或 XML 文档表示为树形结构的编程接口。这个树形结构中的每个节点代表文档中的一个部分,如元素、文本、注释等。
在(1)的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎+输入的用户名”
尝试注入攻击:利用回显用户名注入HTML及JavaScript。
修改html代码,验证规则为用户名至少3个字符且不能为空,密码至少6个字符且不能为空。

创建并编辑php文件

访问html文件

回显欢迎+输入的用户名

使用用户名回显进行注入攻击
html注入,将用户名修改<h1>zyq<h1>

javascript注入攻击,将用户名改为<script>alert("zyq")</script>

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

启动服务

登录mysql

创建数据库

使用数据库

创建数据表并加入数据

查询表中数据

创建新用户授予权限

登入新用户

(4)Web后端:编写PHP网页,连接数据库,进行用户认证
编写一个新的php文件

修改之前的html文件将php改为新的php

使用php用户认证

输入不正确账号密码时

(5)最简单的SQL注入,XSS攻击测试
SQL注入,使用' or 1=1#形成永真式

XSS攻击,使用<script>alert(1)</script>

(6)安装DVWA或WebGoat平台,并完成SQL注入、XSS、CSRF攻击。
登录DVWA

SQL注入攻击
sql语句语句猜测1

使用1' UNION SELECT 1,database() from information_schema.schemata#获取数据库名为dvwa

使用1' UNION SELECT 1,table_name from information_schema.tables where table_schema='dvwa'#获取表名为users和guestbook

使用1' UNION SELECT 1,column_name from information_schema.columns where table_schema='dvwa' and table_name='users'#获取列名user_id、first_name、last_name、user、password、avatar、last_login、failed_login

使用1' UNION SELECT 1,group_concat(user,0x3a,avatar) from users#获取数据

反射型XSS攻击
ctrl+u查看源码,可以看到其以get方式返回数据

输入zyq之后查看源码,发现zyq嵌入源码中

输入<script>alert("20222309 zyq")</script>

存储型XSS攻击
输入<script>alert("20222309zyq")</script>

输入之后内容显示如下

CSRF攻击
先随便输入一个密码,发现url发生改变

我们用一个新的url:http://127.0.0.1/dvwa/vulnerabilities/csrf/?password_new=20222309&password_conf=20222309&Change=Change#,密码发生改变

3.问题及解决方案

  • 问题1:dvwa打开不了
  • 问题1解决方案:有个服务没有启动,照网上教程重新启动一次就行
  • 问题2:dvwa功能无法正常使用
  • 问题2解决方案:没有设置难度,设置成low之后可以正常使用

4.学习感悟、思考等

在本次涉及 Web 前端与后端技术以及相关安全测试的实验过程中,我收获了丰富且深入的知识与实践经验,对 Web 开发和安全领域有了更为全面和深刻的认识。在 Web 前端 HTML 部分,成功安装并启停 Apache 服务器是构建 Web 应用的基础步骤。通过深入理解 HTML,我掌握了构建网页结构的基本要素,能够熟练地创建各种元素。进入 Web 前端 JavaScript 环节,在已有的 HTML 表单基础上进行功能拓展是一次极具挑战性和启发性的实践。我深刻理解了 JavaScript 的基本功能,它能够为网页添加动态交互性,使网页不再是静态的展示页面,而是能够根据用户的操作做出实时响应。在 Web 后端 MySQL 基础部分,安装和启动 MySQL 数据库服务器是构建数据存储层的关键。我学会了创建数据库、用户以及修改密码等基本操作,这些操作是管理数据库系统的基础技能。最后,安装 DVWA 或 WebGoat 平台并完成 SQL 注入、XSS、CSRF 攻击的实践过程让我对 Web 安全攻击有了更系统和深入的认识。通过本次实验,我深刻认识到 Web 开发过程中安全的重要性。在构建 Web 应用时,不能仅仅关注功能的实现,还必须将安全因素贯穿始终。从前端的用户输入验证到后端的数据库操作,每一个环节都可能存在安全漏洞,如果不加以防范,可能会给用户带来巨大的损失。同时,我也意识到安全是一个动态的过程,随着技术的发展和攻击手段的不断更新,我们需要持续学习和研究新的安全技术和防御策略,以保障 Web 应用的安全性。

posted @ 2024-12-06 11:50  泉hiahia  阅读(11)  评论(0编辑  收藏  举报