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

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

1.实验内容

  1. Web前端HTML
    能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。
  2. Web前端javascipt
    理解JavaScript的基本功能,理解DOM。
    在1.的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎+输入的用户名”
    尝试注入攻击:利用回显用户名注入HTML及JavaScript。
  3. Web后端:MySQL基础:正常安装、启动MySQL,建库、创建用户、修改密码、建表
  4. Web后端:编写PHP网页,连接数据库,进行用户认证
  5. 最简单的SQL注入,XSS攻击测试
  6. 安装Webgoat或类似平台,并完成SQL注入、XSS、CSRF攻击。

2.实验过程

2.1 Web前端HTML

  1. 开启Apache

    systemctl start apache2 # 开启Apache服务

  2. 编写HTML





    20192415实验八






    背景图片


    20192415实验八














    用户号: <input type="text" name="uno" size="20"placeholder="请输入用户编号">
    密 码: <input type="password" name="pwd" size="20"placeholder="请输入密码">







  3. 结果展示

    打开火狐浏览器,地址栏内输入:127.0.0.1/login_new.html,即可查看HTML效果。
    (或点击/var/www/html文件夹下的login.html,将跳转至网页)

2.2 Web前端javascipt

  1. 编写javascipt

  2. 按钮添加onclick属性

  3. 结果展示

    打开火狐浏览器,地址栏内输入:127.0.0.1/login_new.html,即可进入网页。
    (或点击/var/www/html文件夹下的login_new.html,将跳转至网页)

    输入用户名和密码,并再次确认密码。

    点击登陆按钮后,成功回显“欢迎+输入的用户名”。

  4. 注入攻击:利用回显用户名注入HTML及JavaScript

    注入代码如下:

    HTML注入攻击来自20192415邢质斌

    #HTML注入
    #JavaScript注入

    注入效果展示:

2.3 Web后端:MySQL

  1. 准备工作

    下载mariadb。

    apt-get install mariadb-server # 服务端
    apt-get install mariadb-client # 客户端

    打开MySQL服务。

    systemctl start mysql # 打开mysql服务
    systemctl status mysql # 查看服务当前状态

    之后再次输入mysql可以进入MariaDB命令行界面。
    接下来查看mysql数据库的root密码,并进行修改。

    use mysql; # 进入mysql数据库
    show databases; # 查看现有的数据库
    select host, user, password from user; # 查看用户表数据
    set password for 'root'@'localhost' = password('xzb20192415'); # 修改root用户的密码
    flush privileges; # 更新权限

    修改root密码后重新登陆。

    mysql -u root -p # 使用新密码进行登录测试
    use mysql; # 进入mysql数据库
    select host, user, password from user; # 查看用户表数据

  2. 建立数据库,添加表

    创建 xzb20192415 数据库并进入使用。

    create database xzb20192415; # 创建一个新数据库
    show databases; # 查看现有的数据库
    use xzb20192415; # 使用该数据库

    在 xzb20192415 数据库中创建 loginuser 登陆用户表,并添加一条记录。

    create table loginuser (uname VARCHAR(20),password VARCHAR(30)); # 在数据库中创建登陆用户表
    insert into loginuser values('20192415test','20192415Xzb'); # 在登陆用户表中添加一条记录
    select * from loginuser; # 查看登陆用户表记录

2.4 Web后端:PHP

  1. 编写PHP网页,连接数据库,进行用户认证

    <?php
    header("Content-type:text/html;charset=utf-8");
    $uname=$_POST["uname"];
    $pwd=$_POST["pwd"];
    $query_struser="SELECT * FROM loginuser where username='$uname' and password='$pwd';";
    $mysqli = new mysqli("localhost", "root", "xzb20192415", "xzb20192415");
    $query_strdatabase="use xzb20192415;";

    echo $query_struser;

    /* check connection */
    if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
    }
    echo "Connected Successfully!";

    /* Select queries return a resultset */
    if ($result = $mysqli->query($query_strdatabase)) {
    echo"
    Success into database!";
    }

    if ($result = $mysqli->query($query_struser)) {
    if ($result->num_rows > 0 ){
    echo "
    Welcome {$uname}!
    ";
    }
    else {
    echo "
    Login Fail!
    " ;
    }
    /* free result set */
    $result->close();
    }
    $mysqli->close();
    ?>

  2. 修改login.html

    修改login.html,将表单的“action”属性指向“login.php”。

  3. 检验用户认证效果

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

  1. SQL注入

    SQL注入攻击是指,后台数据库操作时,如果拼接外部参数到SQL语句中,就可能导致欺骗服务器执行恶意的SQL语句,造成数据泄露、删库、页面篡改等严重后果。
    按变量类型分为:数字型、字符型;
    按HTTP提交方式分为:GET注入、POST注入、Cookie注入;
    按注入方式分为:报错注入、盲注(布尔盲注、时间盲注)、堆叠注入等等。

    在用户名输入框输入 ' or 1=1-- ,密码任意输入,可登录成功。
    因为sql语句会变为“ SELECT * FROM loginuser where username='' or 1=1--' and password='123';”,“1=1”保证该式永真,二而之后的内容都被注释掉了。

  2. XSS攻击测试

    XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。

    在用户名输入框输入输入下列语句,可达成简单的XSS攻击。

    # 弹出警告
    # 显示图片

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

  1. 安装Webgoat平台

    打开下载网站,选择webgoat-server-8.1.0.jar进行下载。

    下载完成后放入Webgoat文件夹,在终端进入Webgoat文件夹,输入如下命令启动:

    java -jar webgoat-server-8.1.0.jar

    在浏览器中输入网址 http://localhost:8080/WebGoat/login ,注册将直接登录Webgoat平台。

    用户名:xzb20192415
    密码:xzb2415

  2. SQL注入

    • String SQL injection

      在这道题中,SQL语句的目的是:根据删选条件查出表user_data中所有的数据。
      实现原理:where后的条件中必须有一个永真条件。
      因此按照下图选择下拉框选项,可正确解题。

    • Numeric SQL injection

      在这道题中,使用了SQL预编译语句,但只对Login_Count做了防护,User_Id还是可以作为注入点。
      按照下图作答,SQL语句为SELECT * From user_data WHERE Login_Count = 1 and userid= 1 or 1=1,可正确解题。

    • Compromising confidentiality with String SQL injection

      这道题使用String SQL注入破坏机密性,从employee表中检索所有雇员数据。其基本原理还是利用“OR”关键字,在SQL语句中构建永真条件。

      按照下图作答,SQL语句为SELECT * FROM employees WHERE last_name = 'xzb' AND auth_tan = 'xzb' or '1'='1';,可正确解题。

    • Compromising Availability

      这道题利用字符型注入来破坏可用性,要求把表access_log删除。使用drop table关键字进行操作即可。
      框内输入内容如下,其中xzb可为任意字符,--是将之后的内容都注释掉。

      xzb'; drop table access_log; --

  3. XSS

    • Reflected XSS

      在HTTP响应中使用未经验证的用户输入时,可能会发生XSS。在反射的XSS攻击中,攻击者可以使用攻击脚本创建URL,并将其发布到另一个网站、通过电子邮件发送,或者让受害者单击它。确定字段是否易受XSS攻击的一种简单方法是使用alert()或控制台log()方法,使用其中一个来找出哪个字段易受攻击。

      该题中存在两个可提交字段,使用alert()来确定哪个字段易受攻击。
      分别在尝试在两个提交框中输入如下攻击代码,发现代码在第一个提交框中时会出现弹窗,可知第一个提交框易受攻击。

    • DOM-Based XSS

      题目已经告诉我们“The 'base route' in this case is: start.mvc#lesson”,而js文件中写道“'test/:param': 'testRoute'”,因此答案就是“start.mvc#test/”。提交后显示答案正确。

  4. XSRF

    • Change the URL to display Jerry

      右键单击“Steal the Cheese”,选择“Inspect”,找到隐藏域,将“Tom.jpg”改为“Jerry.jpg”,将出现Jerry的图片。

3.问题及解决方案

问题1:开启Apache2后,访问目录中的网站提示“You don't have permission to access this resource”。

问题1解决方法:给www文件夹下的所有文件给予一定的权限。执行了指令“sudo chmod 777 -R /var/www”,指令作用是给予www文件目录下的所有文件及其子目录下的所有文最高权限777。
问题2:对/var/www/html中的html、php等文件内容进行了修改,然而网页端未变化。
问题2解决方法:用命令“systemctl stop apache2”关闭Apache服务,再重新开启即可。或者可尝试清理浏览器缓存。
问题3:表单的action属性指向php后,确认登录会提示下载php文件而不是进入相应页面。

问题3解决方法:重新开启Apache2,重新开启mysql,并再次给www文件目录下的所有文件赋最高权限,最后能够正常进入php界面。
问题4:下载webgoat-server-8.2.2.jar,启动报错。

问题4解决方法:jar与java版本不兼容,重新下载webgoat-server-8.1.0.jar使用。

4.学习感悟、思考等

通过本次实验,我加深了对HTML、JavaScript、PHP的数据库等在安全层面的认知,对于设计系统时做好前后端交互安全有了更深入的理解。互联网深入人民生活,Web网页是当今时代互联互通的重要工具,做好Web安全有着重要意义,使用Web和设计Web也应格外注重安全问题。

5.参考资料

posted @ 2022-06-11 23:11  20192415邢质斌  阅读(318)  评论(0)    收藏  举报