20155205 郝博雅 Exp 8 Web基础

20155205 郝博雅 Exp 8 Web基础

1、实验目标

(1).Web前端HTML(0.5分)javascript

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

(2).Web前端javascipt(0.5分)html

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

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

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

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

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

2、实验内容

Web前端HTML

  • 使用指令apachectl start打开Apache服务,使用netstat -aptn查看一下端口占用。能够看到上次实验更改的信息。

  • 在kali的浏览器中输入localhost:80。按理说应该能够看到上次克隆的网址,可是咱们可能会看到这个网页。出现这个网页也能够说明apache在正常运行,只是须要替换一下/var/www/html/index.html的网页。具体网页信息可看:翻译

  • 使用cd /var/www/html进入到Apache的工做目录下,vi test.html新建一个含有表单的html:
<html>
<head>
    <title>login</title>
</head>
<body>
    <form name=form method=post action=#>
        <table>
            <tr>
                <td colspan=2>Login interface</td>  
            </tr>
            <tr>
                <td>user:</td>
                <td><input type=text name=user size=16></td>
            </tr>
            <tr>
                <td>pwd:</td>
                <td><input type=password  name=pwd size=16></td>
            </tr>
            <tr>
                <td colspan=2><input type=submit value=submit></td>
            </tr>
        </table>
    </form>
</body>
</html>
  • 能够看到效果:

  • 咱们尚未写登录后的页面,因此action值为"#",这是form标签的属性,表明提交数据到本页。
  •  HTTP 定义了与服务器交互的不一样方法,最基本的方法是 GET 和 POST。
POST方式,数据放置在HTML HEADER内提交,数据在URL中看不到

GET只能传输比较少的数据,安全性较低,POST传输数据较多,安全性也比GET高

Web前端javascipt

  • JavaScript是一种属于网络的脚本语言,已经被普遍用于Web应用开发,经常使用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果,一般JavaScript脚本是经过嵌入在HTML中来实现自身的功能的。数据库

  • 咱们可使用JavaScript来编写一个验证用户名、密码的规则:检查页面中的登陆用户名,密码是否为空,且密码长度很多于6。apache

  • 代码以下:

  • 当输入了用户名却没有输入密码时:

  • 当输入的密码小于6位时:

Web后端:MySQL基础

  • 一开始就遇到了一个问题

  • 修改了配置、更新了下载源都无法解决这个问题,因此换了个虚拟机
  • 先输入/etc/init.d/mysql start指令开启mysql服务,输入mysql -u root -p,并根据提示输入密码,默认密码为p@ssw0rd,进入MySQL。
  • 对密码进行修改:输入use mysql;,选择mysql数据库;输入update user set password=PASSWORD("20155205") where user='root';,修改密码;输入flush privileges;,更新权限;

  • 使用create database hby_exp;创建一个数据库;使用show databases;查看存在的数据库;使用use hby_exp;使用咱们建立的数据库:(千万不要忘记语句后的“;”)

  • 使用create table 表名 (字段设定列表);创建数据库表,并设置字段基本信息;使用show tables;查看存在的数据表

  • 使用insert into 表名 values('值1','值2','值3'...);插入数据;使用select * from 表名查询表中的数据:

  • 在MySQL中增长新用户,使用grant select,insert,update,delete on hby_exp.* to amy2@localhost identified by "222";指令,这句话的意思是将对某数据库的全部表的select,insert,update,delete权限授予某ip登陆的某用户:

Web后端:编写PHP网页

  • 在/var/www/html目录下新建一个PHP测试文件test.php,内容为:
<?php
echo ($_GET["a"]);
include($_GET["a"]);
echo "This is 20155205hby's php test page!<br>";
?>
  • 在浏览器网址栏中输入localhost:80/test.php?a=/etc/passwd,可看到/etc/passwd文件的内容

  • 利用PHP和MySQL结合以前编的登陆网页进行简单的用户身份认证,将以前编的登陆网页的login.html代码中form的action属性由#改为login.php,即登陆后跳转到login.php,再在火狐浏览器中输入localhost:80/login.html访问本身的登陆页面.
  • 登录成功:

  • 登录失败:

SQL注入

  • 在用户名输入框中输入' or 1=1#,密码随便输入,是能够登录成功的。

  • 咱们还能够经过SQL注入将用户名和密码保存在数据库中,可是得修改一下以前的代码,由于咱们以前编的代码中if ($result = $mysqli->query($query_str))这条判断语句不容许多条sql语句执行,因此将它改为if ($result = $mysqli->multi_query($query_str))便能实现执行多个sql语句
    在用户名输入框中输入';insert into users values('5205','20155205');#,接着登陆会看到失败

  • 可是已经插入到咱们的数据库表中

  • 使用插入的用户名和密码登录

XSS攻击测试

  • XSS攻击是攻击者经过在原始页面注入恶意的javascript脚本语言,达到获取用户token,从而达到伪造用户身份的目的。

1.简单攻击

  • 将一张图片存入/var/www/html目录
    在用户名输入框中输入<img src="hhh.jpeg" />hhh</a>读取/var/www/html目录下的图片:

2.非持久型攻击

  • 经过浏览器执行,从而达到攻击目的,仅仅对当前页面产生影响。

  • 新建一个test.php,输入下面的代码,即在url中插入一段js代码

  • 在浏览器中输入localhost/test.php会显示下图中的页面

  • 点击Click to Download后会弹到'http://www.cnblogs.com/bangerlee/'这个网站

  • 第一种攻击:输入http://localhost/test.php?name=guest<script>alert('attacked')</script>,简单输出alert对话框

  • 第二种攻击:将标签为a的url改写成为attacker的url
http://localhost/test.php?name=  
<script>  
window.onload = function() {  
var link=document.getElementsByTagName("a");link[0].href="http://attacker-site.com/";}  
</script>

  • 第三种攻击:将攻击代码改成ascii,隐蔽的攻击
http://localhost/test.php?  
name=%3c%73%63%72%69%70%74%3e%77%69%6e%64%6f%77%2e%6f%6e%6c%6f%61%64%20%3d%20%66%75%6e%63%74%69%6f%6e%28%29%20%7b%76%61%72%20%6c%69%6e%6b%3d%64%6f%63%75%6d%65%6e%74%2e%67%65%74%45%6c%65%6d%65%6e%74%73%42%79%54%61%67%4e%61%6d%65%28%22%61%22%29%3b%6c%69%6e%6b%5b%30%5d%2e%68%72%65%66%3d%22%68%74%74%70%3a%2f%2f%61%74%74%61%63%6b%65%72%2d%73%69%74%65%2e%63%6f%6d%2f%22%3b%7d%3c%2f%73%63%72%69%70%74%3e
  • 跳转后的页面和第二种攻击是同样的

3.持久型攻击

  • 意味着此次攻击所影响的时间更为持久。如能够经过一次攻击获取用户的cookie,从而掌握其sessionID,模拟用户和服务器交互,窃取用户信息。

3、基础问题回答

(1)什么是表单

  • 表单在网页中主要负责数据采集功能。一个表单有三个基本组成部分: 表单标签、
    表单域(包含了文本框、密码框、隐藏域、多行文本框、复选框、单选框、下拉选择框和文件上传框等)、
    表单按钮(包括提交按钮、复位按钮和通常按钮.表单按钮能够用于将数据传送到服务器上的CGI脚本或者取消输入,还能够用表单按钮来控制其余定义了处理脚本的处理工做)。

(2)浏览器能够解析运行什么语言。

  • 支持HTML(超文本标记语言)、XML(可扩展标记语言)以及Python、PHP、JavaScript、ASP等众多脚本语言

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

  • JavaScript、ASP、PHP、Ruby等脚本语言。

4、实验体会

此次实验遇到了不少问题,都是虚拟机配置出了错,因此途中换了两次虚拟机。最后本身在网上找了一些关于sql和xss的资料,挑了较简单的(不须要从新搭环境的)作了一下,仍是很有收获的。

相关文章
相关标签/搜索