2018-2019 2 20165203 《网络对抗技术》Exp8 Web基础

时间:2019-05-15 15:21:00   收藏:0   阅读:100

2018-2019 2 20165203 《网络对抗技术》Exp8 Web基础

实验要求

1.本实践的具体要求有:

(1) Web前端HTML(0.5分)

能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。

(2) Web前端javascipt(0.5分)

理解JavaScript的基本功能,理解DOM。编写JavaScript验证用户名、密码的规则。

(3) Web后端:MySQL基础:正常安装、启动MySQL,建库、创建用户、修改密码、建表(0.5分)

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

(5) 最简单的SQL注入,XSS攻击测试(1分)

功能描述:用户能登陆,登陆用户名密码保存在数据库中,登陆成功显示欢迎页面。

课题负责人需要完成:登陆后可以发贴;会话管理。

基础知识问答

(1)什么是表单

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

浏览器属于Web前端,通常可以识别HTML、CSS和JS语言等。

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

查了一下资料得知,常见的有3种语言ASP、JSP和PHP。

知识储备

模块分类:

实践过程

1.Web前端:HML

技术分享图片

技术分享图片

技术分享图片

<html>
<head>
<title>CryptoTeam</title>
<!-- Meta tag Keywords -->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- Meta tag Keywords -->
</head>

<body>
<style type="text/css">
    body{
             background-image:url("manwei.jpg");
             background-position:center;
    background-repeat:no-repeat;
            }
</style>
<div style="text-align:center;margin-top:120px">
<!--main-->
<!--//header-->
 <h2 align="center"><font size=6>Login</font></h2>
        <center>
        <form action="login" method="post">
    <input placeholder="E-mail or your name" name="Name" class="user" type="email">
    <br>
    </br>
    <input  placeholder="Password" name="Password" class="pass" type="password">
    <br>
    </br>
    <input  type="submit" value="Enter">
          </form>
         </center>
<!--//main-->
</div>
</body>
</html>

在浏览器尝试打开

技术分享图片

2.Web前端:javascipt

<!-- Meta tag Keywords -->
</head>

<body>
<style type="text/css">
    body{
             background-image:url("manwei.jpg");
             background-position:center;
    background-repeat:no-repeat;
            }
</style>
<div style="text-align:center;margin-top:120px">
<!--main-->
<!--//header-->
 <h2 align="center"><font size=6>Login</font></h2>
        <form action="login" method="post" name="form_login">
    <input placeholder="E-mail" name="Email" class="user" type="email" 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-->
</div>

<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>

技术分享图片

3.Web后端:MySOL基础

技术分享图片

技术分享图片

update user set password=PASSWORD("新密码") where user = 'root';

来修改密码;输入flush privileges;更新权限

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

登录成功,说明新用户增加成功

4. Web后端

<?php
echo ($_GET["a"]);
include($_GET["a"]);
echo "This is my php test page!<br>";
?>

技术分享图片

<?php
$uname=$_POST["Email"];
$pwd=$_POST["Password"];
echo $uname;
$query_str="SELECT * FROM login_table where username='$uname' and password='$pwd';";
$mysqli = new mysqli("127.0.0.1", "xiayunxiao", "123456", "xyx");
$query_str1="use xyx;";

/* 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_str1)) 
echo"<br>Success into database!";
echo$uname;
if ($result = $mysqli->query($query_str)) {
    if ($result->num_rows > 0 ){
          echo "<br> {$uname}:Welcome login!! <br> ";
  } 
  else {
      echo "<br> login failed!!!! <br> " ; }
  /* free result set */
  $result->close();
}
$mysqli->close();
?>

技术分享图片

技术分享图片

技术分享图片

5.最简单的SQL注入,XSS攻击测试

1)SQL注入

SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器质性恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎质性的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。

技术分享图片

技术分享图片

这是因为,我们输入的用户名在数据库中都会转换成SQL语句中的select语句,而输入‘ or 1=1#时,语句变成了

select * from users where username='' or 1=1#' and password=''

这就有意思了,#相当于注释符,会把后面的内容注释表,而1=1是永真式,所以这个条件永远成立,不管密码是否输入正确,都能够登陆成功。

2)XSS攻击

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

技术分享图片

实验中遇到的问题及解决方法

本次实验因为自己对于数据库方面的知识只是java课上接触点儿皮毛,所以还是遇到一些问题,希望对大家有所帮助。

Q1:在我输入127.0.0.1/login.html时,无法显示页面。

技术分享图片

A1:遇到这种问题,首先要在网址栏中输入127.0.0.1看看自己的Apache服务器是否已经打开。第二,看看我们的网页名字是否正确,也就是自己的var/www/html目录下是否存在着这样一个网页。我属于第二种,自己的网页名字为login_test.html,哈哈哈哈。

技术分享图片

Q2:自己的用户名和密码均输入正确,但总是显示无法连接数据库。

A2:这就需要查看自己的login_test.htmllogin.php的对应关系。如图所示,我的login_test.html的Name中的namelogin.php中的变量unamepwd要对应起来。

技术分享图片

技术分享图片

Q3:在做SQL注入攻击时,输入攻击语句时,提示只能输入email

技术分享图片

A3:查看自己的login_test.html,在用户名输入栏中的type栏中输入为email,所以只能识别email,我们可以将其改为text,这样就能识别文本类型了。

技术分享图片

实验感想

本次实验的过程容易理解,自己编写一个网页,然后进行攻击,而且综合性比较强,既有刘念老师的网络安全编程课的知识,也有数据库的知识,所以,打好基础很重要,在数据库方面自己还需要多加练习,另外,感谢同学们在实验过程中对我提供了帮助。希望自己能在今后的实验中能更加努力。

原文:https://www.cnblogs.com/20165203-xyx/p/10869192.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!