20154309 【网络对抗技术】Exp8: Web基础

20154309 【网络对抗技术】Exp8: Web基础

一、实验要求

  • 掌握网页编程的基本知识
  • html语法
  • javascript
  • php
  • 前端,后台,数据库之间如何建立连接
  • 掌握数据库的使用
  • mysql的启动,创建数据库,表单等基本操作
  • sql语句的使用
  • 了解如今网页设计上的一些安全隐患以及原理
  • sql注入
  • xss攻击

二、实验问题解答

  • 什么是表单
  • 表单是web设计中一个组件,用于采集用户输入的数据,以便进行后续处理,实现和用户之间的交互
  • 浏览器可以解析运行什么语言
  • html
  • php
  • 脚本语言:javascript, python 等
  • WebServer支持哪些动态语言
  • javascript, python等脚本语言

三、实验过程

(一)web前端html

Apache

apache 是kali下的web服务器,通过访问 ip地址+端口号+文件名称 可以打开对应的网页。

输入命令 apachectl start 打开apahce,并使用 netstat -aptn查看端口号 ,确认apache正确开启,如下图所示:

进入apache2的存储html文件的文件夹/var/www/html新建相应html文件,设计自身表单(这里对文件夹中的lyq.html略作一点修改,将桌面截图放置在同一文件夹做背景图)

(二)web前端JavaScript

JavaScript

一种用于web开发的脚本语言,用于实现网页上的一些动态功能以及实现与用户之间的互动

DOM

(文档对象模型):是W3C组织推荐的处理可扩展标志语言的标准编程接口

以下使用javascript创建一些简单的用户名密码的验证规则(用户名不能为空以及对密码长度做出限制)

<html>
	<head>
    	<script>
       		 function username_test(){
            	var nameTest=document.getElementById("username");
            	if(nameTest.value==""){
                	alert("用户名不能为空");
            }
        }

        function password_test(){
            var pwdTest=document.getElementById("password");
            if(pwdTest.value.length<6){
                alert("密码长度不得少于六位");
          	  }
        	}
   	 </script>
	</head>
	<body>
	</body>
</html>

(三)web后端MySQL基础

启动MySQL(命令与Apache2类似)

使用默认用户名密码登录MySQL(默认密码:p@ssw0rd)

使用 show databases; 命令查看基本信息

  • 修改密码
  • 输入use mysql;,选择mysql数据库
  • 输入select user, password, host from user;,mysql库中的user表中存储着用户名、密码与权限
  • 输入UPDATE user SET password=PASSWORD("新密码") WHERE user='root';
  • 输入flush privileges;,更新权限
    -
  • 之后quit退出mysql就可以使用新的密码来登录mysql
  • 创建新表:
  • CREAT SCHEMA theNAME ; 命令创建库,之后添加表单
  • 之后向表中添加我们需要的信息
  • 使用命令就可以看到我们刚刚添加的用户信息

(四)web后端编写PHP网页

PHP

一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Preprocessor)的缩写。PHP 是一种 HTML 内嵌式的语言,PHP与微软的ASP颇有几分相似,都是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,现在被很多的网站编程人员广泛的运用。

首先编写一个简单的php文件test.php

<?php
  echo ($_GET["A"]);
  include($_GET["A"]);
  echo "this is my first php page!<br>";
?>

效果如图所示:

(五)SQL注入

SQL本是查询语句,可以实现对数据库的增、删、改、查等操作,是操作数据库数据的直接手段,但是SQL语句是存在缺陷的,根据前文中SQL的编写过程可以体会,当输入某些特定格式的字符串的时候,会利用语法避开一些检查,通常也叫这样的密码为“万能密码”

获取权限

在用户名输入框中输入' or 1=1# ,这样的数据库收到的合成语句为select * from users where username='' or 1=1#' ,#相当于注释符,会把后面的内容都注释掉,而1=1是永真式,所以这个条件肯定恒成立,所以能够成功登陆:

删除用户

  • 既然sql语句可以增删查改,那我们也可以通过某个格式,将表中的记录删掉:
  • ';DELETE FROM info WHERE usrname='gq';#
  • 因为上述语句是2句,所以得改改php代码:if ($result = $mysqli->multi_query($query_str)) ,当然原来的写法本就是防范SQL注入的一种方法
  • 将该SQL注入语句输入用户名,密码随便输入,点击登录,会提示失败(因为此时的目的并不是登录获取权限,而是删除gq这条记录)
  • 查看数据库,比对前后的不同,删除结果:

    显然,之前的账号和密码是登不上去了

(六)xss攻击测试

XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意的特殊目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常呼略其危害性。

  • 简单的XSS实践:
  • 用户名输入:<img src="5221.jpg">gq</a>
  • 密码随意,但要保证该图片物理位置和网页在同一个文件夹下

三、实验感想

  1. 本次的实验可以算是一个小的web服务系统。系统虽小,五脏俱全。整个实验涵盖了前端html代码编写、javascript代码编写、php代码编写、sql语句执行、apache服务调试、mysql系统搭建……
  2. 知识点很多,需要了解的东西也不少,但总体来说就是一根主线:apache(html)<——>php<——>mysql,apache负责搭建web服务挂载html网页,mysql负责数据库的维护,php负责为前二者“搭桥牵线”,使前端与后台数据能够交互,弄清楚这层关系,对这个实验也就有了一个整体的把握
  3. 涉及到《网络攻防》这门课的知识,我想说的是《web基础》实验内容是网络攻防中web类的基础,如果不掌握一些基本的web相关知识与语法,不接触web类基础的编程,是无法理解一些攻防原理的,就像本次简单的SQL注入和XSS攻击,这些都是基于语法的漏洞来实现攻击的,所以要夯实web基本功

posted on 2018-05-23 01:41  4309yanqing  阅读(145)  评论(0编辑  收藏  举报

导航