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>
- 密码随意,但要保证该图片物理位置和网页在同一个文件夹下
三、实验感想
- 本次的实验可以算是一个小的web服务系统。系统虽小,五脏俱全。整个实验涵盖了前端html代码编写、javascript代码编写、php代码编写、sql语句执行、apache服务调试、mysql系统搭建……
- 知识点很多,需要了解的东西也不少,但总体来说就是一根主线:apache(html)<——>php<——>mysql,apache负责搭建web服务挂载html网页,mysql负责数据库的维护,php负责为前二者“搭桥牵线”,使前端与后台数据能够交互,弄清楚这层关系,对这个实验也就有了一个整体的把握
- 涉及到《网络攻防》这门课的知识,我想说的是《web基础》实验内容是网络攻防中web类的基础,如果不掌握一些基本的web相关知识与语法,不接触web类基础的编程,是无法理解一些攻防原理的,就像本次简单的SQL注入和XSS攻击,这些都是基于语法的漏洞来实现攻击的,所以要夯实web基本功
posted on 2018-05-23 01:41 4309yanqing 阅读(145) 评论(0) 编辑 收藏 举报