zoukankan      html  css  js  c++  java
  • 2018-2019-2 网络对抗技术 20165227 Exp8 Web基础

    2018-2019-2 网络对抗技术 20165227 Exp8 Web基础

    问题

    • 什么是表单
      在网页中主要负责数据采集功能。一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法。 表单域:包含了文本框、密码框、隐藏域、多行文本框、复选框、单选框、下拉选择框和文件上传框等。 表单按钮:包括提交按钮、复位按钮和一般按钮;用于将数据传送到服务器上的CGI脚本或者取消输入,还可以用表单按钮来控制其他定义了处理脚本的处理工作。

    • 浏览器可以解析运行什么语言。
      超文本标记语言:HTML
      可扩展标记语言:XML
      脚本语言:ASP、PHP、Script、JavaScript、VBScript、Perl、Python、ColdFusion、Java、JSP等。

    • WebServer支持哪些动态语言
      PHP、JSP。

    实验步骤

    实验一:Web前端HTML

    1、安装Apache(已安装)
    2、Apache

    • 命令service apache2 start 启动服务
    • 如果失败,可以用netstat -tupln | grep 80 查询80端口是否被占用
    • 命令service apache2 stop停止服务

    3、测试

    • 浏览器输入127.0.0.1:80

    • 浏览器输入127.0.0.1:80/5227zy.html

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>登录页面</title>
    <script language="javascript">
    var movingID=null;
    var scrolling=false;
    function startMove()
    {
        
        var left=eval(bear.style.left.replace("px",""));
        if(left <document.body.scrollWidth-400)
            bear.style.left=left+1;
        else
            bear.style.left=1;
        movingID=setTimeout("startMove()",0.1); 
        
    }
    function mysubmit()
    { 
        if(document.form1.password.value==""   || document.form1.username.value=="")
        {
            alert("账号、密码不能为空!");
            window.location.href="login.html"
        
        }   
        else
           form1.submit();
    
    }
    </script>
    <style type="text/css">
    a:link{color:#41506D;font-size:125%;text-decoration:none}
    a:visited{color:#41506D;font-size:125%;text-decoration:none}
    a:hover{color:#FFF200;font-size:125%;text-decoration:none}
    </style>
    </head>
    <body  onload="startMove()" style="background-image: url(./login.png);background-repeat:no-repeat;topmargin:60;leftmargin:12 ;overflow-x:hidden;overflow-y:scroll;" >
    <br><br><br>
        <p align="right">
        <a  target=_parent href="index.jsp" >登 录</a>    &nbsp;&nbsp;     <a target=_parent href="addone.jsp" >注 册</a>
        </p>
    <form action="login.php" method="POST" name="form1">
    <table style="background: url(./登录.png);background-repeat:no-repeat;position:relative;left:300px;top:0px;border-collapse:collapse;">
    <tr><th style="border:5px solid white;height:50px;230px;padding:0px;text-align:center;vertical-align:center;color:#41506D;font-size:150%;font-family:Microsoft YaHei UI;">
     登 录 界 面
    </th></tr>
    <tr>
    <td style="border:5px solid white;height:180px;230px;padding:0px;text-align:center;vertical-align:center;color:#41506D;">
    
    <p style="position:absolute;left:27px;top:50px;font-size:130%;color:black;font-family:Microsoft YaHei UI;">用户名 </p>
     <input align="center" type="text" name = "username"  style="position:absolute;left:100px;top:70px;height:35px;100px;font-size:130%;"/> <br><br>
    <p style="position:absolute;left:27px;top:100px;font-size:130%;color:black;font-family:Microsoft YaHei UI;">密&nbsp;&nbsp;&nbsp;码 </p>
    &nbsp; <input align="center" type="password" name = "password"  style="position:absolute;left:100px;top:120px;height:35px;100px;font-size:130%;"> <br>
    <input type = "button" value = "提交" onClick="mysubmit()" style="position:absolute;left:50px;top:190px;height:35px;150px;font-size:120%;">
    
    </td>
    </tr>
    </table></form>
    
    <div id="bear" style="visibility:visible;position:absolute;left:1px;top:330px;z-index:1;400px;height:170px;overflow-x:hidden;overflow-y:hidden;">
    </div>
    
    </body>
    </html>
    
    

    实验二:Web前端javascipt

    • 规则:限制用户必须输入用户名和密码

    实验三:Web后端

    1、Mysql安装(自带)
    2、启动

    • 命令/etc/init.d/mysql start开启服务
      3、数据库操作

    • 命令mysqladmin -u root password "5227" ,将root的密码修改为5227

    • 执行mysql -u root -p 以root身份登录MySQL

    • 命令GRANT USAGE ON *.* TO 'zhuyue'@'localhost' IDENTIFIED BY '5227' WITH GRANT OPTION;建立新用户

    • 命令use mysql使用数据库;select user, password from user;查询用户

    • 命令grant all privileges on *.* to 'szk' identified by '20165228' with grant option; FLUSH PRIVILEGES; 给新用户赋予权限

    • 命令create database zhuyue27;创建zhuyue27数据库

    • drop database zhuyue27;可以删除数据库

    • 使用zhuyue27数据库,执行create table zy (username VARCHAR(20),password VARCHAR(20));新建表

    • 向表中插入数据insert into zy values('20165227','72256102');

    • 命令grant select,insert,update,delete on zhuyue27.* to zhuyue@localhost identified by "5227"; 将对某数据库的所有表select,insert,update,delete权限授予当前主机localhost用户zhuyue,其密码是5227

    • 编写PHP网页,进行用户认证login.php

    <?php
    
    $uname=($_POST["username"]);
    $pwd=($_POST["password"]);
    
    echo $uname; 
    
    $query_str="SELECT * FROM zy where username='{$uname}' and password='{$pwd}';";
    
    /* echo "<br> {$query_str} <br>";*/
    
    $mysqli = new mysqli("127.0.0.1", "zhuyue", "5227", "zhuyue27");
    
    /* 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> Wellcome login Mr/Mrs:{$uname} <br> ";
        } 
        else {
            echo "<br> login failed!!!! <br> " ;
        }
    
        /* free result set */
        $result->close();
    }
    
    
    $mysqli->close();
    
    ?>
    
    • 登陆成功

    • 登陆失败

    实验四:SQL注入

    • 原理:
      SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。
    • 攻击:
      当应用程序使用输入内容来构造动态sql语句以访问数据库时,会发生sql注入攻击。如果代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的字符串来传递,也会发生sql注入。sql注入可能导致攻击者使用应用程序登陆在数据库中执行命令。相关的SQL注入可以通过测试工具pangolin进行。如果应用程序使用特权过高的帐户连接到数据库,这种问题会变得很严重。在某些表单中,用户输入的内容直接用来构造动态sql命令,或者作为存储过程的输入参数,这些表单特别容易受到sql注入的攻击。而许多网站程序在编写时,没有对用户输入的合法性进行判断或者程序中本身的变量处理不当,使应用程序存在安全隐患。这样,用户就可以提交一段数据库查询的代码,根据程序返回的结果,获得一些敏感的信息或者控制整个服务器,于是sql注入就发生了。
    • 在网页登录的用户名中填写' or 1=1#,密码随意,成功登陆:

    (这时候的合成后的SQL查询语句为select * from users where username='' or 1=1#' and password=md5(''),#相当于注释符,会把后面的内容都注释掉,而1=1是永真式,所以这个条件肯定恒成立)

    实验五:XSS攻击测试

    • 在登录的用户名中输入:< img src="zy.jpg" />zhuyue</ a>,读取/var/www/html目录下的图片:

    实验感想

    • 此次实验用到了许多上学期学的知识,为了完成实验还去复习了一下,果然学过的知识不复习就会忘得很快啊。。。还是挺有趣的一个实验~
  • 相关阅读:
    RE
    【LeetCode】198. House Robber
    【LeetCode】053. Maximum Subarray
    【LeetCode】152. Maximum Product Subarray
    【LeetCode】238.Product of Array Except Self
    【LeetCode】042 Trapping Rain Water
    【LeetCode】011 Container With Most Water
    【LeetCode】004. Median of Two Sorted Arrays
    【LeetCode】454 4Sum II
    【LeetCode】259 3Sum Smaller
  • 原文地址:https://www.cnblogs.com/zhuyue-study/p/10888846.html
Copyright © 2011-2022 走看看