编辑
2026-05-03
网络安全实验报告
00

目录

网络安全实验报告4
一、实验目的
二、实验内容
三、实验步骤
四、实验分析

网络安全实验报告4

一、实验目的

  1. 掌握Web前端开发基础,熟练运用HTML表单设计与JavaScript进行DOM操作及输入验证。
  2. 熟悉Web后端数据库环境搭建,精通MySQL的安装、建库建表及用户权限配置。
  3. 理解并掌握Web应用安全机制,能够编写PHP脚本连接数据库实现用户身份认证。
  4. 深入理解SQL注入、XSS跨站脚本攻击及CSRF跨站请求伪造的攻击原理与防御思路。
  5. 通过DVWA或WebGoat平台进行实战演练,提升对常见Web漏洞的挖掘与利用能力。

二、实验内容

  1. Web前端环境搭建:在Kali Linux中安装并启动Apache服务,编写包含用户名和密码输入框的HTML登录表单,理解GET与POST方法的区别。
  2. 前端脚本逻辑编写:利用JavaScript实现对用户输入的非空校验与密码逻辑判断,并在登录成功后回显欢迎信息,同时尝试HTML与JavaScript注入攻击。
  3. 后端数据库配置:安装并启动MySQL服务,创建指定数据库与数据表,插入测试用户数据,并设置数据库用户的访问权限。
  4. 后端认证逻辑实现:编写PHP网页连接MySQL数据库,通过接收前端POST数据进行SQL查询,实现基于数据库的用户登录验证功能。
  5. 安全漏洞实战测试:在自建系统及WebGoat平台上,分别实施SQL注入万能密码攻击、XSS脚本弹窗攻击及CSRF伪造请求攻击,验证漏洞有效性。

三、实验步骤

步骤1:Web前端环境搭建与表单制作。 打开Kali终端,输入命令systemctl start apache2启动Apache服务。使用vi /var/www/html/2427_test.html创建文件,编写HTML代码,设置表单方法为POST,添加账号与密码输入框,ID分别为username和password,并设置一个onclick事件绑定login()函数的登录按钮。在浏览器访问http://127.0.0.1/2427_test.html验证页面显示正常。

步骤2:JavaScript验证与注入测试。 在HTML文件头部添加<script>标签,编写login()函数:获取输入值,若为空则弹窗提示;若密码不等于"20222427"则报错;否则使用document.body.innerHTML回显"Welcome"信息。在账号框输入<h1>xwt</h1>测试HTML注入,输入<script>alert("xwt")</script>测试JS注入。若后者无法执行,修改代码为document.write(),确认成功弹出警告框。

步骤3:MySQL数据库的安装与配置。 在终端输入systemctl start mysql启动数据库。执行mysql -u root -p登录,依次输入create database 20222427xwt;创建数据库,use 20222427xwt;切换数据库。执行create table user (username VARCHAR(30),password VARCHAR(20));建表,使用insert into user values('xwt','20222427');插入数据。最后执行GRANT ALL PRIVILEGES ON 20222427xwt.* TO 'xwt'@'%';FLUSH PRIVILEGES;完成授权。

步骤4:编写PHP后端连接数据库。 使用vi /var/www/html/2427.php创建PHP文件。配置$servername为localhost,$dbname为20222427xwt。使用new mysqli建立连接,检查connect_error。获取POST参数,构建SQL语句SELECT * FROM user WHERE username = '$username' AND password = '$password'。执行查询,若num_rows > 0则输出“登陆成功”,否则输出错误。修改HTML表单action指向2427.php,输入用户名xwt和密码20222427验证认证成功。

步骤5:SQL注入与XSS攻击测试。 在自建登录框账号处输入'or 1=1 #,密码随意,成功登录显示欢迎信息,验证了SQL注入漏洞。在账号处输入<script>alert("xss")</script>,成功触发弹窗,验证了XSS漏洞。

步骤6:WebGoat平台综合攻击。 下载webgoat.jar并传入Kali,执行java -jar webgoat-2023.8.jar启动。访问http://localhost:8080/WebGoat/login

  • SQL注入:进入SQL injection (Intro) -> 9,在last_name字段输入Smith' or '1'='1,构造永真式获取所有用户数据。
  • XSS攻击:进入Cross Site Scripting -> 7,输入<script>alert("20222427XSS")</script>,成功弹出提示框。
  • CSRF攻击:进入Cross-Site Request Forgeries -> 3,创建HTML文件CSRF_2427.html,编写表单action指向http://127.0.0.1:8080/WebGoat/csrf/basic-get-flag。访问该HTML并点击提交,获取flag值35605,输入平台验证通过。

四、实验分析

实验结果 本次实验成功搭建了包含前端HTML/JS、后端PHP及MySQL数据库的完整Web应用系统。前端实现了输入验证与DOM操作,能够回显欢迎信息并响应HTML及JavaScript注入测试。后端成功连接数据库,依据查询结果实现了正确的用户身份判断。在漏洞测试环节,利用'or 1=1 #成功绕过自建系统的登录验证;在WebGoat平台上,通过构造特定的SQL语句、XSS脚本及伪造CSRF HTML请求,均触发了预期的攻击效果,成功获取了系统数据与Flag值,验证了各项漏洞的存在。

个人收获 通过本次实验,我不仅掌握了Web开发的全栈基础流程,更深刻理解了常见Web安全漏洞的底层原理。对于SQL注入,我明白了通过构造特殊闭合符号改变SQL逻辑的危险性,认识到了参数化查询的重要性。对于XSS,我清楚了它是如何利用浏览器对恶意脚本的信任执行攻击。对于CSRF,我理解了用户身份被隐式劫持的过程。这些实战经验让我意识到,在编写代码时必须严格过滤用户输入,对数据进行转义处理,从而构建更加安全的Web应用。

本文作者:Linxiong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!