• 20155338《网络对抗》Exp8 Web基础


    20155338《网络对抗》Exp8 Web基础

    实验内容

    Web前端:HTML

    • 使用netstat -aptn查看80端口是否被占用,如果被占用了就kill 原进程号,我的没有被占用。

    • 空闲就用apachectl start开启Apache,然后再次用netstat -aptn查看端口占用情况。

    • 在kali的火狐浏览器上输入localhost:80测试apache是否正常工作

    • 进入Apache工作目录/var/www/html,新建一个csj5338.html文件,编写一个含有表单能实现输入用户名、密码实现登录的html。

    • 打开浏览器访问localhost/csj5338.html,出现刚才编写的HTML页面。

    javascipt

    • 使用javascipt修改之前csj5338的代码,完善Form表单,并在浏览器上测试,如下图所示

    Web后端:MySQL基础

    • /etc/init.d/mysql start开启sql服务。

    • 输入 mysql -u root -p 用账号root登录,并根据提示输入对应密码,我的MySQL默认密码就是直接回车,进入Mysql。

    修改MySQL的root用户密码

    • use mysql;,选择mysql数据库。
    • select user, password, host from user;,查看mysql库中的user表中存储着用户名、密码与权限。

    • 输入UPDATE user SET password=PASSWORD("新密码") WHERE user='root';更改密码。
    • flush privileges;进行更新。

    • 重新登录验证密码更改成功

    MySQL建表建库

    CREATE SCHEMA `库表的名称`;
    CREATE TABLE `库表的名称`.`users` (
     `userid` INT NOT NULL COMMENT '',
     `username` VARCHAR(45) NULL COMMENT '',
     `password` VARCHAR(256) NULL COMMENT '',
     `enabled` VARCHAR(5) NULL COMMENT '',
     PRIMARY KEY (`userid`) COMMENT ''); 
    
    

    • 输入 use 库表名 使用刚建的库表。并输 insert into users(userid,username,password,enabled) values(ID号,'用户id',password("用户密码"),"TRUE"); 添加新用户

    • 使用 select * from 表名; 查询表中的数据,*表示查询所有的参数信息,也可以指定某一参数比如username来进行查询。

    • 键入 mysql -u pc -p 使用新用户进行登录,验证新用户是否建立成功,登录成功,说明新建用户成功。

    PHP测试

    • 新建一个PHP测试文件 vi /var/www/html/test.php ,输入如下

    • 用浏览器打开 localhost/test.php ,可以看见如下界面,测试成功

    • 简单测试之后,我们可以利用PHP和MySQL结合之前编的前端的代码,完善这个登录系统,做到简单的用户身份认证,进行改进编写了 Login.php
    <?php
    
    $uname=($_POST["username"]);
    $pwd=($_POST["password"]);
    
    /* echo $uname; */
    
    $query_str="SELECT * FROM pc where username='{$uname}' and password='{$pwd}';";
    
    /* echo "<br> {$query_str} <br>";*/
    
    $mysqli = new mysqli("127.0.0.1", "root", "20155338", "pc");
    
    /* 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();
    
    ?>
    
    
    • 浏览器中输入127.0.0.1/csj5338.html来访问自己的页面,输入正确的用户名和密码(即自己所新建数据库表中存在的新加入的用户和密码),显示登陆成功。

    • 在其中输入错误的用户名和密码(即新建数据库表中不存在的),显示登录失败。

    SQL注入

    • 在用户名输入框中输入' or 1=1#,密码随便输入,这时候的合成后的SQL查询语句为select * from lxmtable where username='' or 1=1#' and password='',#相当于注释符,会把后面的内容都注释掉,所以相当于select * from lxmtable where username='' or 1=1而1=1是永真式,所以这个条件肯定恒成立,所以可以成功登录。

    • 还可以通过SQL注入在数据库中插入一条伪造的用户名和密码。
    • 首先修改后端的PHP代码,将if ($result = $mysqli->query($query_str))这条判断语句改成if ($result = $mysqli->multi_query($query_str))使得允许多条sql语句执行,接着在用户名输入框中输入';insert into pc values('100','5338','5338',"true");#,随便输入一个密码,接着登录,出现如下所示。

    • 检查一下数据库看是否插入成功,成功出现了我们新插入的用户。

    • 将PHP改回去,再次用新插入的用户进行登录,登录成功。

    XSS攻击

    • XSS表示Cross Site Scripting(跨站脚本攻击),通过插入恶意脚本,实现对用户浏览器的控制。

    • /var/www/html目录下事先保存一个图片文件1.jpg,然后在登录网页的用户名窗口中输入<img src="1.jpg" />1111</a>,但是显示失败.原因就是在之前的php文件里有句echo $user,将匹配出错的那句echo "<br> login failed!!!! <br> ;改成了echo $uname之后攻击成功。

    基础问题回答

    (1)什么是表单

    • 表单在网页中主要负责数据采集功能。

      一个表单有三个基本组成部分:

    • 表单标签,这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法。

    • 表单域,包含了文本框、密码框、隐藏域、多行文本框、复选框、单选框、下拉选择框和文件上传框等。

    • 表单按钮,包括提交按钮、复位按钮和一般按钮;用于将数据传送到服务器上的CGI脚本或者取消输入

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

    • 超文本标记语言:HTML

    • 可扩展标记语言:XML

    • 脚本语言:ASP、PHP、Script、JavaScript、VBScript、Perl、Python、ColdFusion、Java、JSP等

    (3)WebServer支持哪些动态语言

    • ASP语言,PHP语言和JSP语言
  • 相关阅读:
    HttpClient发送get,post接口请求
    java对象,引用的区别
    java基础知识面试题(41-95)
    java基础知识面试题(1-40)
    mysql增删改查sql语句
    java static成员变量方法和非static成员变量方法的区别
    zip和tgz以及exe的区别
    Java模拟网站登录02【转载】
    Java模拟登录系统抓取内容【转载】
    Java模拟登陆02【转载】
  • 原文地址:https://www.cnblogs.com/Hdywan/p/9070126.html
Copyright © 2020-2023  润新知