网络对抗实验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环境下部署,还是遇到了很多问题。

posted on 2020-05-24 15:20  20175307GSC  阅读(399)  评论(2编辑  收藏  举报

导航