网络对抗技术 20164320 Exp8 Web基础

 

回答问题
(1)什么是表单
在网页中主要负责数据采集功能。一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法。 表单域:包含了文本框、密码框、隐藏域、多行文本框、复选框、单选框、下拉选择框和文件上传框等。 表单按钮:包括提交按钮、复位按钮和一般按钮;用于将数据传送到服务器上的CGI脚本或者取消输入,还可以用表单按钮来控制其他定义了处理脚本的处理工作。
(2)浏览器可以解析运行什么语言。
超文本标记语言:HTML
可扩展标记语言:XML
脚本语言:ASP、PHP、Script、JavaScript、VBScript、Perl、Python、ColdFusion、Java、JSP等。
(3)WebServer支持哪些动态语言
PHP、JSP。

实验内容

1.Web前端HTML
(1)Apache安装
由于我的kali好像已有Apache,所以就没有安装的过程,但是应该可以执行sudo apt-get install apache2来安装
(2)Apache启停

  • 执行service apache2 start来启动apache服务
  • 如果失败,可能是80端口被占用,可执行netstat -tupln | grep 80来查看占用80端口的其他进程,然后kill processID来杀死该进程,然后重新开启apache即可。
  • 使用service apache2 stop来停止apache服务
     

(3)1.测试Apache在浏览器输入127.0.0.1,如果和下图一样,即说明可正常工作。

2.使用 cd /var/www/html 进入Apache目录下,新建一个简单的含有表单的html文件 simple_form.html :

 

编辑文件代码如下:

<html>

<head>

<title>CryptoTeam</title>

<!-- Meta tag Keywords -->

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<!-- Meta tag Keywords -->

</head>

 

<body>

<!-- main -->

<!--//header-->

    <h2>Login</h2>

        <form action="login" method="post">

            <input placeholder="E-mail" name="Name" class="user" type="text">

            <br>

            </br>

            <input  placeholder="Password" name="Password" class="pass" type="password">

            <br>

            </br>

            <input type="submit" value="Login">

        </form>

<!--//main-->

</body>

</html>

 

在浏览器尝试打开

 

2.Web前端javascipt

1)在原有 simple_form.html 基础上,可以添加一段JavaScript代码,以完成对用户是否填写邮箱和密码的判断。修改后的 login_test.html 如下所示:

<html>

<head>

<title>CryptoTeam</title>

<!-- Meta tag Keywords -->

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<!-- Meta tag Keywords -->

</head>

 

<body>

<!-- main -->

<!--//header-->

    <h2>Login</h2>

        <form action="login" method="post" name="form_login">

            <input placeholder="E-mail" name="Email" class="user" type="text" onfocus="if (this.value=='Your email') this.value='';" />

            <br>

            </br>

            <input  placeholder="Password" name="Password" class="pass" type="password" onfocus="if (this.value=='Your password') this.value='';"/>

            <br>

            </br>

            <input type="submit" value="Login" onClick="return validateLogin()"/>

        </form>

<!--//main-->

<script language="javascript"> 

    function validateLogin(){ 

        var sUserName = document.form_login.Email.value ; 

        var sPassword = document.form_login.Password.value ;   

        if ((sUserName =="") || (sUserName=="Your email")){ 

        alert("user email!"); 

        return false ; 

        } 

 

        if ((sPassword =="") || (sPassword=="Your password")){ 

        alert("password!"); 

        return false ; 

        } 

 

    }  

</script> 

 

</body>

</html>

2)在浏览器访问 file:///var/www/html/login_test.html ,如果用户邮箱或密码未填,网页会提示:

 

3.Web后端:MySQL基础

 

(1)MySQL的配置

 

输入代码/etc/init.d/mysql start 启动MySQL服务 注意开头不需要加cd。。。

输入mysql -u root -p ,用root权限登录MySQL

输入use mysql;进入数据库(注意进入数据库之后的操作都要加‘;’否则程序无法识别)

输入代码:update user set password=PASSWORD("20164320") whereuser='root';

修改用户登录密码为20164320

输入 flush privileges;更新权限

输入 exit 退出数据库,使用新的密码登录

使用 create database databasename; 建立数据库

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

 使用 use databasename; 使用我们创建的数据库

使用 create table tablename; 建立数据库表,并设置字段基本信息

使用 show tables; 查看表信息

使用 insert into tablename values('1','2'); 插入数据

输入insert into login_table values('123456789besti4320.com','20164320')插入数据表项信息

  输入select * from login_table;

 

在MySQL中增加新用户,使用 grant select,insert,update,delete on sql.* to username@localhost identified by "password";

尝试登陆

4.Web后端:编写PHP网页,连接数据库,进行用户认证

(1)先编写简单的php网页脚本

在 /var/www/html 目录下新建一个PHP测试文件 phptest.php ,简单了解一下它的一些语法

<?php

 

 echo ($_GET["a"]);

 

include($_GET["a"]);

 

echo "This is my wjt php test page!<br>";

 

?>

 在浏览器网址栏中输入 localhost/phptest.php?a=/etc/passwd ,可看到 /etc/passwd 文件的内容

可以看到测试网页内容:this is my php test page!

 

(2)利用PHP和MySQL,结合之前编写的登录网页进行登录身份认证

 在var/www/html目录下创建文件login.html和login.php

 login.php

代码如下:

<html>

<head>

<title>login</title>

</head>

<h1>Login</h1>

<body>

<table>

 <form action="login.php" method="GET" name="form_login">

<tr>

<td>username:</td>

<td><input type="text" name="username" size="20" maxlength="20"onfocus="if (this.value=='You name')this.value='';"/></td>

</tr>

<tr>

<td>password:</td>

<td><input type="password" name="password" size="20" maxlength="20"onfocus="if (this.value=='You password')this.value='';"/></td>

</tr>

<table>

<tr>

<td><input type="submit" name="login" value="submit"onClick="return validateLogin()"/></td>

<td><input type="reset" name="rs" value="reset"/></td>

</tr>

</table>

</from>

</table>

 

<script language="javascript"> 

    function validateLogin(){ 

        var sUserName = document.form_login.username.value ; 

        var sPassword = document.form_login.password.value ;   

        if ((sUserName =="") || (sUserName=="Your name")){ 

        alert("user email!"); 

        return false ; 

        } 

 

        if ((sPassword =="") || (sPassword=="Your password")){ 

        alert("password!"); 

        return false ; 

        } 

 

    }  

</script> 

 

</body>

</html>

 

<?php

$uname=($_GET["username"]);

$pwd=($_GET["password"]);

echo $uname;

$query_str="SELECT * FROM login_table where username='$uname' and password='$pwd';";

$mysqli = new mysqli("127.0.0.1", "root", "666", "wh");

 

/* check connection */

if ($mysqli->connect_errno) {

    printf("Connect failed: %s\n", $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!!! <br> ";

    }

    else {

        echo "<br> login failed!!!! <br> " ; }

    /* free result set */

    $result->close();

}

$mysqli->close();

?>

4.在浏览器输入 127.0.0.1/login.html 访问自己的登录界面,并登录自己的用户名和账号

 

简单SQL注入,XSS攻击测试

1.SQL注入

  • SQL注入原理 是利用现有应用程序,将SQL命令注入到后台数据库引擎执行的能力,可以通过在Web表单中输入SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。

在用户名输入框输入 ' or 1=1# ,密码任意输入,可登陆成功

    • 输入的用户名与select语句组合变成 select * from users where username='' or 1=1#' and password='' ,#起到注释作用屏蔽了密码判断语句,而1=1是1,所以能够成功登陆。
    • 2.XSS攻击
      • XSS攻击原理 一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。

      将图片放在 /var/www/html 目录下,在用户名输入框输入 <img src="21.jpg" /> ,密码任意,但是发现登陆失败了。

实验感想

本次实验难度不大,但对代码要求较高,需要和同学合作讨论后才能完成,马上要结课了,好快啊

posted on 2019-05-19 15:55  王某先森  阅读(131)  评论(0编辑  收藏  举报