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

  • xss攻击

    • 在用户名中输入<img src=x onerror=alert("XSSInjectedSucceed")>,密码输入任意值即可实现xss攻击。

      80a4bbf1eca6d90962c17729d565e22

       

      086d43a6ce44d46feda66f4231bbfc6

(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' #获取表user中的字段。

      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。

  • xss攻击。
    • 使用Reflected
      • 输入xss,输入内容会显示到页面和URL中。

        c1ddaac27d95dd3dc3c4aac910a93e0

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

        112c514e74b1039fa4778bb94820cfb

        dde10b1c2ec4b174843e9ed1e247ee4

    • 使用Stored
      • 正常输入时,输入信息会保存到页面中。

        8806814efc65f9b9d7f1c1537fe8709

      • 在Message输入框输入<script>alert('lady_killer9')</script>。

        ececa1863f2ca98b44bbc4012e70d94

    • 使用DOM
      • 点击select,URL中default参数会显示提交的内容。
      • 改变default为<script>alert('XSS')</script>。

        742537d00c0f8ff63d869b2c5e67ce0

  • 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安全。

参考资料

posted @ 2025-11-26 11:33  傻星  阅读(12)  评论(0)    收藏  举报