zoukankan      html  css  js  c++  java
  • 网络对抗实验8----Web基础

    20175307 2020-5 《网络对抗技术》Exp8 Web基础 Week12

    一、实践目标

    1、实践对象
    • Kali Linux
    2、实践内容
    • Web前端: HTML
    • Web前端: Javascipt
    • Web后端: MySQL基础
    • Web后端: 编写PHP网页
    • SQL注入: XSS攻击测试

    二、实验过程

    1.Web前端: HTML
    • 首先通过`service apache2 start`命令开始apache tomcat中间件,因为不会有返回值,所以为了判断是否已经开始,需要输入`service apache2 status`
      

    图:tomcat初始化

    • 在Win创建好html页面
    <html>
    <head>
    <title>20175307 网络对抗实验8登录页面</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    <body>
        <h2 align="center">登录界面</h2>
    <center>
        <form action="login" method="post">
           请输入用户名:<input placeholder="用户名" name="Name" class="user" type="username">
         <br>
         </br>
           请输入密码:<input  placeholder="密码" name="Password" class="pass" type="password">
         <br>
         </br>
         <input type="submit" value="登录">
         </form>
    </center>
    </body>
    </html>
    

    并粘贴到Kali,然后通过cp命令,粘贴到/var/www/html/下cp /home/kali/20175307exp8/20175307.html /var/www/html/

    • 在浏览器查看
    2.Web前端: Javascipt

    在代码中加入JavaScript代码判断用户是否填写用户名和密码,若未填写用户名和密码就提交会提示错误:

    <html>
    <head>
    <title>20175307网络对抗exp8</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    <body>
    	<h2 align="center">登录界面</h2>
    <center>
    	<form action="login" method="post" name="form">
    	请输入用户名:<input placeholder="用户名" name="name" class="user" type="username" onfocus="if (this.value=='Your username') this.value='';" />
    	<br>
    	</br>
    	请输入密码:<input  placeholder="密码" name="password" class="pass" type="password" onfocus="if (this.value=='Your password') this.value='';"/>
    	<br>
    	</br>
    	<input type="submit" value="登录" onClick="return validateLogin()"/>
    	</form>
    </center>
    <script language="javascript">  
        function validateLogin(){  
            var user_namee = document.form.name.value ;  
            var user_pwd = document.form.password.value ;    
            if ((user_namee =="") || (user_namee=="Your username")){  
            alert("请输入用户名,用户名不能为空!");  
            return false ;  
            }  
            if ((user_pwd =="") || (user_pwd=="Your password")){  
            alert("请输入密码,密码不能为空!");  
            return false ;  
            }  
        }   
    </script>  
    </body>
    </html>
    
    • 两项都不输入,直接点击登录

    • 只输入姓名,不输入密码
      

    说明javascript可以正常运行

    3.Web后端: MySQL基础

    因为初始化的mysql是没有密码的,所以直接命令行输入mysql就可以进入mysql了。
    其次是修改root的密码。

    • show mysql;查看数据库

    • use mysql;使用mysql数据库

    • select user, password, host from user;查看用户和密码

    • update user set password=PASSWORD("20175307") where user='root';更新root账户的密码

    • select user, password, host from user;查看用户和密码,已经完成了修改

    • flush privileges;刷新权限

    • quit退出

    • mysql -u root -p以root身份登录,输入密码

    • create database 20175307gsc;创建名为:20175307gsc的数据库
    • use 20175307gsc;使用20175307gsc数据库
    • create table login (username VARCHAR(20),password VARCHAR(20));创建登录表,并设置用户名和密码
    • insert into login values('gsc','20175307');

    grant select,insert,update,delete on 20175307gsc.* to '5307gsc'@'localhost' IDENTIFIED BY "5307"; 创建一个名为5307gsc,密码为5307,的用户拥有对20175307gsc数据库选取、插入、更新、删除的权限。

    4.Web后端: 编写PHP网页
    <?php
    $uname=$_POST["name"];
    $pwd=$_POST["password"];
    /* echo $uname; */
    $query_str="SELECT * FROM login where username='$uname' and password='$pwd';";
    
    $host='127.0.0.1';
    $user='root';
    $password='20175307';
    $dbName='20175307gsc';
    $link=new mysqli($host,$user,$password,$dbName);
    
    /* check connection */
    if ($link->connect_error) {
        die("连接失败:".$link->connect_error);
    }
    echo "Connect";
    /* Select queries return a resultset */
    if ($result = $link->query($query_str)) {
    	if ($result->num_rows > 0 ){
    		echo "<br> Wellcome {$uname} <br> ";
    	} else {
    		echo "<br> Login Faided <br> " ;
    	}
        /* free result set */
        $result->close();
    }
    $link->close();
    ?>
    
    

    5.SQL注入: XSS攻击测试
    • 在浏览器中输入[本机IP地址]/[登录页面文件名]进入登录页面,用户名输入' or 1=1#,密码随意输入

    • 在用户名框中输入,密码随便输入,就可以在登录成功界面看到该图片。

    三、基础问题回答

    1.什么是表单?

    表单在html里是form,表单是一个包含表单元素的区域。表单包括很多元素,例如文本框、密码框、提交按按钮、重置按钮、单选框、复选框等。这些元素都是直接和用户进行交互的,由用户进行输入信息。。
    表单通过

    定义。

    2.浏览器可以解析运行什么语言。

    我知道浏览器可以运行php、html、JavaScript、python

    3.WebServer支持哪些动态语言

    Active Server Pages
    Microsoft已开发出一种用于生成称为 Active Server Pages 的动态Web内容的技术,简称 ASP。使用ASP,Web 服务器上的HTML页面可以包含嵌入代码的片段(通常是VBScript或JScript-尽管几乎可以使用任何语言)。在将页面发送到客户端之前,Web服务器将读取并执行此代码。

    Server-side JavaScript
    Netscape 也有一种服务器端脚本技术,它被称为服务器端 JavaScript,或简称为 SSJS。与 ASP 一样,SSJS 同样允许将代码片段嵌入到 HTML 页面中以生成动态 Web 内容。区别在于 SSJS 使用 JavaScript 作为脚本语言。使用 SSJS,可以预编译网页以提高性能。

    四、实践收获与感想

    通过本次实验从另一个角度学习了HTML语言的编写,并加深了对MySQL数据库的理解和应用。最主要的是从反面学习如何防止sql注入和XSS攻击,本次实验虽然不难,但是第一次在Linux环境下部署,还是遇到了很多问题。

  • 相关阅读:
    Java实现数组去除重复数据的方法详解
    java枚举和constant使用区别
    如何健壮你的后端服务
    entityframework学习笔记--001
    MongoDB配置服务--MongoDB安装成为windows服务
    MongoDB基础入门003--使用官方驱动操作mongo,C#
    MongoDB基础入门002--基本操作,增删改查
    MongoDB基础入门001--安装
    webapi的返回类型,webapi返回图片
    C#异步下载文件--基于http请求
  • 原文地址:https://www.cnblogs.com/gsc20175307/p/12950930.html
Copyright © 2011-2022 走看看