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安全得学习还有很长的路要走,我也会在之后继续学习得。