zoukankan      html  css  js  c++  java
  • 20155204《网络对抗》Exp8 Web基础

    20155204《网络对抗》Exp8 Web基础

    一、基础问题回答

    1.什么是表单

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

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

    超文本标记语言:HTML
    可扩展标记语言:XML
    脚本语言:ASP、PHP、Script、JavaScript、VBScript、Perl、Python、ColdFusion、Java、JSP

    3. WebServer支持哪些动态语言

    PHP语言、JSP语言。

    二、实践总结与体会

    这次实验我们主要实践了关于web中SQL的使用,以及一些简单的SQL的攻击方式。这几个攻击方式让我感觉逻辑上的漏洞真的是十分巧妙的,也是非常难以防范的。

    三、实践过程记录

    1.Web前端HTML

    • 通过apchectl start打开apahce。

    • 在kali浏览器中输入localhost:80,观察Apache正常工作。

    2.Web前端:javascipt基础

    • 进入Apache工作目录/var/www/html,新建一个wh.html文件,限制用户登录时必须输入用户名和密码。

    3.MySQL基础

    • 这部分主要练习SQL的使用。
    • 输入/etc/init.d/mysql start打开mysql服务,
    • 输入mysql -u root -p,以root身份登录,根据提示输入密码,默认密码为p@ssw0rd,进入MySQL;
    • 用show databases;查看基本信息。(分号一定要加)

    • 创建数据库和新表。命令如下:
    create database 库名;
    use 库名;
    create table tb1 (userid VARCHAR(100),username VARCHAR(45),password VARCHAR(256),enabled VARCHAR(5));
    

    • 在表中添加内容:
    insert into tb1(userid,username,password,enabled) values(1,'20155204','5204',"TRUE");
    
    • 输入select * from tb1;查看表中现在的信息:

    4.Web后端:PHP网页

    • 在/var/www/html目录下编写一个wh1.html(在之前的wh.html上修改),设置将wh1.html的表单提交到whL.php。

    • 编写wh.php,通过php实现对数据库的连接,并显示用户是否能成功登录。

    <?php
    
    $uname=($_POST["username"]);
    $pwd=($_POST["password"]);
    
    /* echo $uname; */
    
    $query_str="SELECT * FROM tb1 where username='$uname' and password='$pwd';";
    
    /* echo "<br> {$query_str} <br>";*/
    
    $mysqli = new mysqli("127.0.0.1", "wh15204", "5204", "db1");
    
    /* 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> Welcome login Mr/Mrs:{$uname} <br> ";
        } else {
            echo "<br> login failed!!!! <br> " ;
        }
    
        /* free result set */
        $result->close();
    }
    
    
    $mysqli->close();
    
    ?>
    
    • 在登录页面中输入数据库中存有的用户名和密码并点击提交,如果匹配就登录成功。

    5.SQL注入

    • 可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
    • 在网页登录的用户名中填写' or 1=1#,密码随便输入,这时候的合成后的SQL查询语句为select * from users where username='' or 1=1#' and password=md5(''),#相当于注释符,会把后面的内容都注释掉,而1=1是永真式,所以这个条件肯定恒成立,所以能够成功登陆。

    • 或者先在PHP中改语句if ($result = $mysqli->query($query_str))为if ($result = $mysqli->multi_query($query_str)),然后在用户名框中输入';insert into users values('66','5204','20155204',"TRUE");#在数据库中可以直接插入一个伪造的用户名,密码,下次就可以用伪造的用户名密码登录网站了(登录前将if ($result = $mysqli->query($query_str))语句改回来)。

    6.XSS攻击

    • 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆。故将跨站脚本攻击缩写为XSS。XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy)。这种类型的漏洞由于被骇客用来编写危害性更大的phishing攻击而变得广为人知。对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的“缓冲区溢出攻击“,而JavaScript是新型的“ShellCode”。

    • 在登录的用户名中输入:5204,读取/var/www/html目录下的图片:

  • 相关阅读:
    Java中-classpath和路径的使用
    总是分不清
    Maven Web项目部署到Tomcat下问题
    一、数据设计规范
    一、入职学习
    一、服务器控件
    WebApiThrottle限流框架
    一、接口的规则
    一、免费API调用
    十、锁
  • 原文地址:https://www.cnblogs.com/20155204wh/p/9045796.html
Copyright © 2011-2022 走看看