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

一、实验核心内容

本次实验聚焦 Web 前端基础技术应用,核心包含两大模块:一是 HTML 技术的实践应用,涉及 Apache 服务器的运维与含表单网页的开发;二是 JavaScript 的功能实现,重点是基于 DOM 的表单数据验证逻辑编写。通过实验掌握 Web 前端基础交互原理,为后续攻防场景中的前端漏洞分析奠定基础。

二、Web 前端 HTML 模块:理解与实践过程

(一)核心概念理解

HTML 是构建 Web 页面的基础标记语言,负责定义页面结构与内容呈现。表单作为 HTML 的核心交互组件,用于收集用户输入的各类数据(如用户名、密码)。GET 与 POST 是表单数据提交的两种核心方法,GET 方法会将数据拼接在 URL 中,适用于少量非敏感数据传输;POST 方法则通过请求体传递数据,安全性更高,适合传输敏感信息或大量数据。Apache 是常用的开源 Web 服务器,能够解析 HTML 文件并向客户端提供网页访问服务。

(二)实践操作过程

  1. 首先完成 Apache 服务器的安装,从官方渠道获取适配操作系统的安装包,按照向导完成路径配置与环境变量设置,避免端口冲突(默认 80 端口),发现端口并未被占用

    b80eea59-746b-4ebb-84af-ca6a9fdc52c7

  2. 学习 Apache 的启停命令,通过命令行工具或图形化界面启动服务,在浏览器中输入 “localhost” 验证是否成功访问默认首页,确保服务器正常运行。启动Apache,在命令行中输入:systemctl start apache2921bb2f3-b309-4afc-bbde-5d2398d4c006

    image

     

    终端输入命令,在 Apache 文档根目录创建 HTML 文件:
    sudo vim /var/www/html/login_20232318.html
    
     

    44e650bf79c7f9f188ac8fdd3c622e7f

    访问表单页面

    1. 打开 Kali 浏览器,输入 URL:http://localhost/login_20232318.html,即可看到带 “20232318wangtianhao” 标识的登录表单。

      3abf03c462812774919b49a54660b6a8

       

      在原HTML上加入JavaScript对用户输入进行验证

    用户名要求

    decd2b4e8768135d9c39c2ae426f379b

     密码要求

    16a965b343b38521618cd0f88b59249d

     登陆成功

    f9257e4e5a389e63bcaaa5d6ef9655a5

     JavaScript注入,在用户名处输入下面的代码:
    <script type="text/javascript">alert("JavaScriptInjectionSucceed.")</script>

    4f3d21c21c98b9d24bcd7f6a58e9c729

     

     HTML注入,在用户名处输入下面的代码:

    <h1>HTML injection succeed.</h1>

    9af82d5f5b8420a0b701149175cc64e3

     

     

    Web后端MySQL基础

    因为kali中自带MySQl,所以使用systemctl start mysql打开MySQL服务

    systemctl status mysql确认服务状态。

    46b4b4b8e2e1a6eb9228259c04d7c832

    输入MySQl启动

    进行数据库相关工作:

    -- 1. 创建学号命名的数据库
    CREATE DATABASE 20232318db;
    -- 2. 切换到该数据库
    USE 20232318db;
    -- 3. 创建用户表(匹配JS验证规则)
    CREATE TABLE 20232318_user (
        id INT AUTO_INCREMENT PRIMARY KEY,
        username VARCHAR(20) NOT NULL,
        password VARCHAR(20) NOT NULL
    );
    -- 4. 插入测试数据(后续登录用)
    INSERT INTO 20232318_user (username, password) VALUES ('test01', '123456789');
    -- 5. 验证数据
    SELECT * FROM 20232318_user;

     

    a9500480952a1864dfe7f718d6d16e82

     

    Web后端编写PHP网页

    同样在kali中启动php服务

    79dcf0b8988647038296873423086b4f

     创建 PHP 文件

    sudo vim /var/www/html/20232318_check.php

    粘贴以下代码(密码与 MariaDB 一致):

    4996a158-b8d6-4949-bdee-87bfd6906639

     修复文件权限:

    596795fc78001d5e73eadfc1a7df132b

     

    在浏览器打开20232318_login.html,输入:
     
    • 用户名:test01(数据库中已存)
    • 密码:123456789(9 字符)
       
      点击登录→跳转到20232318_check.php,显示 “验证成功” 即完成。

    8dc0970ff16de3759de81db2c66642e0

     

    注入攻击(HTML/JS/SQL 注入)

    利用用户输入未过滤的漏洞,完成注入测试。

    1. HTML 注入测试

    20232318_login.html的用户名输入框填:
    <h1 style="color:red;">20232318 HTML注入成功</h1>

    17cec0de2ba041ccd4309545962e8b58

     

    SQL 注入测试

    在用户名输入框填:
    test01' OR '1'='1

    a8ac683bdbb9e46b03c1006958ebd631

     

    aa8e7979c4482f83cad5948d0adc8f8c

     

    安装 DVWA + 完成攻防实验

    DVWA 是漏洞练习平台,用于练习 SQL 注入、XSS、CSRF 等攻击。

    1. 下载并配置 DVWA

    从 GitCode 下载 DVWA 压缩包

    1. 在当前 GitCode 页面(https://gitcode.com/2302_81881142/DVWA),点击页面上方的 「下载 zip」 按钮(在 “Clone” 按钮左侧);
    2. 等待压缩包下载完成(Kali 浏览器默认保存到 /root/Downloads 目录)。

    e6f46aed799e179b7e4f4a3883206fe6

     

    解压 DVWA 到 Apache 目录

    打开 Kali 终端,执行以下命令:
    进入Apache网站根目录
    cd /var/www/html
    
    # 将下载的压缩包移动到当前目录
    sudo mv /root/Downloads/DVWA-master.zip ./
    
    # 解压压缩包
    sudo unzip DVWA-master.zip
    
    # 重命名解压后的文件夹为DVWA(方便访问)
    sudo mv DVWA-master DVWA

    092bcf89c6ef6d2e3d40d8cb4c003b2f

    配置 DVWA 的数据库连接

    进入 DVWA 的配置目录,复制默认配置文件:

    cd /var/www/html/DVWA/config

    sudo cp config.inc.php.dist config.inc.php

    修改配置文件,连接你已创建的20232318db

    sudo vim config.inc.php

    找到数据库配置项,替换为我的信息:

    c2ab2fc40e267427c2e7fd3fda71f1e5

     

    设置 DVWA 目录权限

    确保 Apache 能读写 DVWA 目录:
    # 回到Apache根目录
    cd /var/www/html
    
    # 设置DVWA目录的所属用户为Apache运行用户(www-data)
    sudo chown -R www-data:www-data DVWA
    
    # 设置目录权限
    sudo chmod -R 755 DVWA

    afbce37c866b5ec4a6c8bfe41fc430e1

    初始化 DVWA 数据库

    1. 打开 Kali 浏览器,访问:http://localhost/DVWA

    34c7b94717abe128b97ebf4df81d8d09

    1. 页面会显示 “DVWA Setup”,点击下方的 「Create / Reset Database」 按钮;
    2. 等待页面跳转,此时 DVWA 会自动在你的20232318db中创建所需的测试表;

       3. 输入 DVWA 默认账号:

    • 用户名:admin
    • 密码:password
      点击 “Login” 登录。

    ea4b98352bca2decd110d5a6b4f3d5d0

    4ce3800e3695fd4cbd1c200395f20af8

     

    验证 DVWA 可用(适配你的实验)

    登录后,在 DVWA 左侧栏选择 「DVWA Security」,将 “Security Level” 改为 「Low」(方便后续注入实验),然后即可进行:
     

    edc2bb169676edf875d8f4078c9b0d8f

     

    • SQL 注入:左侧栏选 “SQL Injection”,输入1' OR '1'='1测试;
    • 16b8132123f1b60ba2d093d3d04e5c25

    • 输入1' union select 1,2 # 测试,得到参数的回显顺序是1、2。

      c252ba7b583dbca3292ccbe248601372

    •  

      输入1' union select 1,group_concat(column_name) from information_schema.columns where table_name = 'users' #获取表user中的字段 

    •  

      a0d9db67f6f12d68e4a98df567774eb3

       

       

    • XSS(反射型):
    • 输入XSS
    • 45702f9caf5ef532a582c1026f650b6d

    •  

      注入<script>alert('XSS')</script>。 

    • c808b988852302bf3d4a8bc6cf17c7e7

    • 43d717b2835b0af2c6bf90d106956fb5

    •  

      使用Stored 

    • 输入框输入<script>alert('20232318')</script>
    • e142bd01e8c87b588b1c3703cc897bc0

    •  

      使用DOM 

    • URL中default参数会显示提交的内容,改变default为<script>alert('20232318')</script>。
    • b813bb839fcd665df0f2b4083f27defc

    • ccd9494137c468a8355586f3bdd837a1

    •  

       

       

    • 左侧栏选 “XSS (Reflected)”,输入<script>alert("20232318 XSS成功")</script>测试;
    • 5325b406610cb82c561d8c91c153e9ce

    • 9fe29e15d848482cb7432a457150dca7

    • CSRF:左侧栏选 “CSRF”,构造恶意链接修改密码,我修改新密码为20232318
    • 427457b603bfc24568773dbf3a3a514c

    • 修改后的密码会显示在URL中,可见新密码为20232318
    • 1d43743ace41c6c7facbe50db0e8331d

    •  

      进入Test Credentials实验

    • 输入原来密码password,显示密码错误

    • 44842bda91e793c84e099769c1b0a3a6

    • 输入新密码20232318,显示登录成功

    •  90009779b090e13e200bb066f930f4b3

        

三、问题及解决方案

问题一:无法正常启动DVWA程序

image

解决办法:页面空白是因为Apache 未启用 PHP 模块(DVWA 是 PHP 程序,必须让 Apache 支持解析 PHP)先查看已安装的 PHP 版本

php -v

然后启用对应版本的 PHP 模块

然后安装DVWA所需的PHP拓展

安装PHP扩展(以PHP7.4为例)
sudo apt install -y php7.4-mysqli php7.4-gd php7.4-curl
# 重启Apache
sudo systemctl restart apache2

最后重启即可

四、实验总结

  本次网络与系统攻防实验围绕 Web 前后端开发与安全测试展开,从 HTML 表单构建、PHP 连 MariaDB 到注入测试、DVWA 部署,全程让我真切体会到 “攻防一体” 的实践意义。
  实验初期我频繁碰壁:MariaDB 默认认证导致 PHP 无法连接,反复调整命令才改对认证方式;写 PHP 时因中文符号、语法疏漏报错,逐行排查后才懂基础环境稳定是实验前提。注入测试环节,我用 SQL 语句绕过验证、借onerror事件实现 JS 注入,才明白漏洞不是理论概念 —— 用户输入未过滤、直接拼接 SQL,就是攻击的突破口。
  此前写代码我只关注功能实现,如今才懂安全不是 “后期补充”:用专用数据库用户、转义输入内容,这些细节是防护关键。这次实验让我跳出 “只做功能” 的思维,明白开发与安全需同步考量,攻防一体的意识才是筑牢安全防线的核心。
 
posted @ 2025-12-02 12:52  王天昊  阅读(5)  评论(0)    收藏  举报