zoukankan      html  css  js  c++  java
  • 2019-2020-2 20175327 《网络对抗技术》Exp8 Web基础

    一、实验目标及内容

    实践目标

    掌握Web前端、Web后端相关语法基础以及编写出用户能登陆,登陆用户名密码保存在数据库中,登陆成功显示欢迎页面的代码。

    实践内容

    (1)Web前端HTML(0.5分)
    能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。
    (2)Web前端javascript(0.5分)
    理解JavaScript的基本功能,理解DOM。编写JavaScript验证用户名、密码的规则。
    (3)Web后端:MySQL基础:正常安装、启动MySQL,建库、创建用户、修改密码、建表(0.5分)
    (4)Web后端:编写PHP网页,连接数据库,进行用户认证(0.5分)
    (5)最简单的SQL注入,XSS攻击测试(0.5分)
    功能描述:用户能登陆,登陆用户名密码保存在数据库中,登陆成功后显示欢迎页面。
    课题负责人需要完成:登陆后可以发帖;会话管理

    二、实验步骤

    任务一:Web前端HTML

    能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。
    1.Kali默认安装好了Apache,在kali上可以使用命令sudo service apache2 start打开Apache服务器。如果没有任何错误提示即成功开启
    2.此时在浏览器中输入“127.0.0.1”即可打开Apache的默认网页.

    3.输入cd /var/www/html进入到Apache目录下,新建html文件web.html,内容如下:

    <html lang="zh-cn">
    <head>
        <meta charset="utf-8" />
    <title>Login</title>
    </head>
    
    <body>
    
    <div class=bord>
    	<form name ="loginForm"  method="post" action="test.php">
    	<div align="center">
    	<table width="250" height="250" align="center" cellspacing="0">
    	<tr>
    	<th class=title1 align=center>LOGIN</th>
    	</tr>
    	<tr>
    	<td><div class="content">账号<input class=css1 type="text" name="username" size="120"  maxlength="100" border="0"></div></td></tr>
    	<tr>
    	<td><div class="content">密码<input class=css1 type="password" name="password" size="120"  maxlength="100" ></div></td></tr>
    	<tr>
    	<td ><div class="content"><input class=css2 type="submit"  onClick="return validateLogin()" value="  登录  "></div></td>
    	</tr>
    	</table>
    	</div>
        </form>
    </div>
    </body>
    <html>
    

    4.在浏览器地址栏中输入/var/www/html/web.html打开我们新建的网页。

    任务二:Web前端javascipt

    理解JavaScript的基本功能,理解DOM。编写JavaScript验证用户名、密码的规则。

    1. 在原有的web.html的基础上可以添加一段JavaScript代码。实现诸如输入检查的效果。(添加用户名、密码验证规则,加在body后)
    <script language="javascript">  
      function validateLogin(){  
          var sUserName = document.loginForm.username.value ;  
          var sPassword = document.loginForm.password.value ;    
          if (sUserName ==""){  
          alert("the username cannot be empty!");  
          return false ;  
          }  
    
          if (sPassword ==""){  
          alert("the password cannot be empty!");  
          return false ;  
          }  
      }   
    </script>
    

    2.浏览器访问web.html,不输入用户名,跳出弹窗

    3.浏览器访问web.html,不输密码,跳出弹窗

    任务三:Web后端MySQL基础

    正常安装、启动MySQL,建库、创建用户、修改密码、建表
    1.输入/etc/init.d/mysql start开启MySQL服务:

    2.输入sudo mysql -u root -p使用root权限进入,默认的密码是password

    3.输入use mysql进入mysql模块;输入update user set password=PASSWORD("新密码") where user='root';,修改密码;输入flush privileges;,更新权限:

    4.输入exit退出数据库,并输入mysql -u root -p,使用新的密码登录:

    5.使用create database 数据库名称;建立数据库:

    6.使用show databases;查看存在的数据库:

    7.使用use 数据库名称;使用我们创建的数据库:
    8.使用create table 表名 (字段设定列表);建立数据库表,并设置字段基本信息;使用show tables;查看表信息:

    9.使用insert into表名 values('值1','值2','值3'...);插入数据;使用select * from 表名;查询表中的数据:

    10.在MySQL中增加新用户,使用grant select,insert,update,delete on 数据库.* to 用户名@登录主机(可以是localhost,也可以是远程登录方式的IP) identified by "密码";指令,这句话的意思是将对某数据库的所有表的select,insert,update,delete权限授予某ip登录的某用户:

    11.增加新用户后,使用新的用户名和密码进行登录:

    成功增加新用户

    任务四:Web后端PHP网页

    编写PHP网页,连接数据库,进行用户认证
    首先在/var/www/html目录下新建一个PHP测试文件test.php,简单了解一下它的一些语法:

    <?php
    echo ($_GET["a"]);
    include($_GET["a"]);
    echo "This is my php test page!<br>";
    ?>
    

    1.利用PHP和MySQL,结合前面编写的登录网页进行登录身份认证,test.php代码如下:

    <?php
    $uname=$_POST["username"];
    $pwd=$_POST["password"];
    echo $uname;
    $query_str="SELECT * FROM weblogin where username='$uname' and password='$pwd';";
    $mysqli = new mysqli("127.0.0.1", "20175327fkn", "20175327", "5327fkn");
    
    /* check connection */
    if ($mysqli->connect_errno) {
      printf("Connect failed: %s
    ", $mysqli->connect_error);
      exit();
    }
    echo " connection ok!";
    /* Select queries return a resultset */
    if ($result = $mysqli->query($query_str)) {
      if ($result->num_rows > 0 ){
              echo "<br> {$uname}:Welcome login!! <br> ";
      } 
      else {
          echo "<br> login failed!!!! <br> " ; }
      /* free result set */
      $result->close();
    }
    $mysqli->close();
    ?>
    

    2.在浏览器输入127.0.0.1/test.php,连接数据库成功,但因为没有输入用户名密码,所以登录失败。

    3.完成登录操作再跳转到test.php时会显示登录成功:

    任务五:SQL注入,XSS攻击测试

    SQL注入

    1.在浏览器输入127.0.0.1/web.html访问自己的登录界面
    2.在用户名输入框输入' or 1=1#,密码任意输入,可登陆成功

    分析:合成后的SQL查询语句为select * from users where username='' or 1=1 ;# and password=password('...'),#后面都是注释,1=1->true,所以这个语句恒等于true,因此不论password输入什么都能登陆成功。也就是说只要1=1这个地方换成任意是true的语句都可以登陆成功。
    

    3.用户名输入框输入' or true#,密码任意输入

    XSS攻击

    1.将一张图片放在/var/www/html目录下,命名为127.jpg
    2.在浏览器输入127.0.0.1/web.html访问自己的登录界面
    3.在用户名输入框中输入,密码随意输入,就可以读取到图片

    三、实验报告

    遇到的问题

    1.权限错误(一直没弄权限之后才知道安装数据库时未设置密码。由于没有设置密码,所以在需要密码时候按了enter键,从而导致错误:ERROR 1698)

    解决很简单加sudo就可以

    2.连接失败

    解决:
    找到用户名和密码对应发现用户名有问题,改相同

    最后连接成功

    四、实验思考

    基础问题回答

    (1)什么是表单
    表单可以进行前台向后台的数据传输。
    表单有三个基本组成部分:
    (1)表单标签:包含处理表单数据所用CGI程序的URL以及数据提交到服务器的方法。
    (2)表单域:包含文本框、密码框、多行文本框等一系列表单形式。
    (3)表单按钮:包含提交按钮,复位按钮以及一般按钮
    (2)浏览器可以解析运行什么语言

    • HTML(超文本标记语言)
    • XML(可扩展标记语言)
    • Python
    • PHP
    • JavaScript
    • ASP等众多脚本语言
      (3)WebServer支持哪些动态语言
    • ASP
    • JSP
    • PHP
    • Ruby等

    五、实验心得

    本次实验我们使用到了web编程的知识,是上个学期学习的,效果还挺好,没有忘记太多,但是在具体的编程实现上还是有所遗漏的,本次实验帮助我们重新复习了web编程的内容。本次实验还接触到了php代码,用来执行动态网页的action操作,比之前学习的jsp来说,php更加简单,适合我们编写这种较小型的测试代码。

  • 相关阅读:
    eclipse如何导入项目
    CBC和CTR解密模式——C++实现
    安装java之后没有jre目录
    对称密钥解密——C++方法
    使用Eclipse时一些报错
    C/C++文件I/O操作
    获取string的长度
    新建ftp快捷方式
    一些IT书籍
    C语言获得数组长度的函数
  • 原文地址:https://www.cnblogs.com/hollfull/p/12930608.html
Copyright © 2011-2022 走看看