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

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.1 Web前端HTML
能正常安装、启停Apache。

service apache2 start    启动Apache


理解HTML,理解表单,理解GET与POST方法,
HTML是用于创建网页的标准标记语言。它使用各种标签来描述网页的结构和内容;
表单是HTML中的一个重要元素,用于收集用户输入的数据;
GET,数据传输方式,将表单数据附加在 URL 后面发送给服务器;
POST,数据传输方式,将表单数据包含在请求体中发送给服务器,而不是在 URL 中。所以数据对用户来说是不可见的。
编写一个含有表单的HTML,这里我使用的是之前Web课的注册界面


1.2 Web前端javascipt
理解JavaScript的基本功能,理解DOM。
JavaScript在Web里主要实现交互,包含交互功能、本地数据存储与处理数据、获取与处理、更新 CSS 样式、表单验证
DOM是一个编程接口,它将HTML或XML文档表示为一个树形结构的对象,通过这个接口,JavaScript 可以访问和修改网页的内容、结构和样式。
在1的基础上,编写JavaScript验证用户名、密码的规则。
嘿嘿,验证这部分我在Web实验里也写了,注册页面会对用户名长度进行限制,检验密码、邮箱格式


在用户点击登陆按钮后回显“欢迎+输入的用户名”,稍微修改下alert部分,由于要回显,就将alert()换成document.write()

尝试注入攻击:利用回显用户名注入HTML及JavaScript
因为我限制了用户名的输入长度,所以很难实现在用户名注入,所以把限制用户名长度部分给改了,在用户名那里输

20222415<script>alert("讨厌您来");</script>

注入成功,从这里也可以看到,对输入进行限制和检测还蛮重要的。

20222415<h1>讨厌您下次再来</h1>


1.3 Web后端:MySQL基础:正常安装、启动MySQL,建库、创建用户、修改密码、建表
kali是有Mysql的,开启看一下是否开启成功

sudo systemctl start mysql
systemctl status mysql


开启成功了,接下来建库

mysql -u root -p   登录数据库
use mysql    使用mysql
create DATABASE 20222415DB;      建数据库
show DATABASES;


创建用户

create user 'trq'@'%' IDENTIFIED BY '123456';  创建用户trq,密码为123456,任何主机都能登录
GRANT ALL PRIVILEGES ON 20222415DB.* TO 'trq'@'%';  将20222415DB的所有权限授给trq
FLUSH PRIVILEGES;    更新下权限
ALTER USER 'trq'@'%' IDENTIFIED BY '20222415';    修改trq密码
SHOW GRANTS FOR 'trq'@'%';     看一下trq权限


进数据库建表

use 20222415DB  切换到20222415DB数据库
建表
CREATE TABLE `userlogin` (
  `userName` varchar(20) NOT NULL,
  `userPwd` varchar(20) NOT NULL,
  `usermail` varchar(20) NOT NULL
);
设置主键
ALTER TABLE `userlogin`
  ADD PRIMARY KEY (`username`);
查看表
SHOW TABLES;


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

数据库里已经有了信息

登录失败和成功会跳转相应界面


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

用户名:aaa
密码:' or '1'='1

没有这个用户,但注入成功了

XSS

用户名:<script>alert("XSSattack")</script>


1.6 选做Webgoat或类似平台的SQL注入、XSS、CSRF攻击各一例
使用Webgoat平台
SQL注入

,选择Smith' or '1'='1

XSS
card number会回显,所以在这个框里输入

CSRF
CSRF通过伪装成受信任用户请求受信任的网站。
原本用户叫2415trq
在另一个登录页面注册用户创建一个用户csrf-2415trq,以新用户身份登录。
2415trq在原页面点击按钮就会被新用户得知。

3.问题及解决方案

  • 问题1:在进行script注入时,无论我输入什么它都会将我的输入直接显示出来而不是执行。
  • 问题1解决方案:在回显时我用的函数是alert(),改成ducoment.write就可以成功了。

4.学习感悟、思考等

本次实验我编写了登录界面并将其连接到了mysql数据库来进行登陆验证,并对其进行了注入攻击,还在靶场里进行了SQL注入、XSS、CSRF攻击训练。本次实验我最苦手的就是编写php,我Web学得就不是很好,这次编写代码就很是头痛。特别是php的代码,我改错改了很久才改好。到靶场训练部分,其实我三个靶场都搭建好了,但是我都试了一下只有Webgoat是好用的,pikachu能用但我不大熟悉,DVWA就是完全用不了,可能是我搭建得有问题。虽然本次实验是完成了,但是我对Web安全得学习还有很长的路要走,我也会在之后继续学习得。

posted @ 2024-12-20 17:09  RukiTing  阅读(4)  评论(0编辑  收藏  举报