20145335郝昊《网络对抗》Exp 8 Web基础
20145335郝昊《网络对抗》Exp 8 Web基础
实验内容
本实践的具体要求有:
Web前端HTML;能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。
Web前端javascipt:理解JavaScript的基本功能,理解DOM。编写JavaScript验证用户名、密码的规则。
Web后端:MySQL基础:正常安装、启动MySQL,建库、创建用户、修改密码、建表
Web后端:编写PHP网页,连接数据库,进行用户认证
最简单的SQL注入,XSS攻击测试
登陆后发帖及其会话管理(选做)
注意:功能描述用户能登陆,登陆用户名密码保存在数据库中,登陆成功显示欢迎页面。
实验步骤
Web前端:htlm基础
因为web卡发是基于apache服务器进行的,对于apache的基本操作是要掌握的,在上次的dns欺骗的实验中已经用过。对于apache曾经使用的过的端口可以在目录
/etc/apapche2/下的ports.conf下进行修改。使用命令
apachel start打卡apache,并使用命令netstat -atpn查看使用端口

- 如果打不开apache,提示端口被占用,可以先使用
netstat -tupln |grep80,在使用kill+进程ID来杀死进程,Apache服务开启后,我们在浏览器中输入localhost:8080因为受上次实验的影响打开的是上次的伪装页面,上次最后做的是伪装google邮箱。

之后 进入目录
var/www/html,进入到apache的工作目录下,在这个目录下要经常使用到。此时我们先简单的含有表单的html文件,文件名为20145335.html(因为这个是用来测试,所以就使用了ltc同学的代码)


代码如上,在火狐浏览器下访问`localhost:8080/20145335.html`打开,因为没有编写之后的提交代码,点击提交会显示404网页错误。
注意:选用method是
Post,method的属性有两种分为Get和PostGet是用来从服务器上获得数据,而Post是用来向服务器上传递数据;
Get传输的数据量小,这主要是因为受URL长度限制,而Post可以传输大量的数据,所以在上传文件只能使用Post;
Get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;Post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL;
Web前端:javascipt基础
JavaScript是一种属于网络的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,现代所有的web都是使用javascipt来编写完成的。
通常Javascipt脚本是通过嵌入在HTML中来实现自身功能的。
代码如下
<html>
<head>
<meta charset="utf-8">
<title>login</title>
</head>
<body>
<div id="container" style="width:500px">
<div id="header" style="background-color:#FFA500;">
<h1 style="margin-bottom:0;">Weclome</h1> <div id="login"style="backgroung-color:#EEEEEE:height:200px;width400px;float:left;" >
<form name='form' class="form" method='get' action='login.php'>
<input type="text" required="required" placeholder="username" name='username'> <br>
<input type="password" required="required" placeholder="password" name='password'>
<br>
<button class="but" type='submit'>login</button> </form> </div> <div id="footer" style="background-color:#FFA500;clear:both;text-align:center;">from 20145335.com</div> </div> </body>
</html>
通过老师介绍的菜鸟网站菜鸟网站:javascipt教程可以很好的理解javascipt知识。
Web后端:Mysql基础
关于Mysql在以前遇到的计算机实习中,为了完成实验结果,恶补过该方面的知识=_=,对于windows下的命令行模式的mysq数据库的使用较为熟练,估计kali下也大同小异。
首先开启sql服务,使用命令
/etc/init.d/mysql start打开

- 使用命令
mysql -u root -p,并根据提示输入密码,默认密码为p@ssw0rd(第二个是符号@,第六个是数字0)

- 进入mysql后可以使用命令:
show database;查看信息 ,注意:mysql的语句默认是以;分号结尾,输入回车并不代表命令结束,一个分号算一个命令。

- 可以对mysql进行修改密码,使用以下命令:(1)输入
use mysql;,选择mysql数据库。(2)输入select user, password, host from user;,mysql库中的user表中存储着用户名、密码与权限。(3)输入UPDATE user SET password=PASSWORD("新密码") WHERE user='root';。(4)输入flush privileges;,更新权限(5)输入quit退出。


- 之后退出mysql再次使命令
mysql -u root -p进入mysql,使用新修改的密码。

在mysql中新建表,建立表之后在web中可以使用相关信息。输入命令如下:
CREATE SCHEMA `库表的名称`;
CREATE TABLE `库表的名称`.`users` (
`userid` INT NOT NULL COMMENT '',
`username` VARCHAR(45) NULL COMMENT '',
`password` VARCHAR(256) NULL COMMENT '',
`enabled` VARCHAR(5) NULL COMMENT '',
PRIMARY KEY (`userid`) COMMENT '');

- 向新建的表中添加用户,使用命令为:
use 新建立的库表的表名、insert into users(userid,username,password,enabled) values(1,'用户id',password("用户密码"),"TRUE");

Web后端:php测试
在目录
/var/www/html下新建一个20145335.php测试文件,看是否可以打开。

用浏览器再地址栏输入
localhost:8080/20145335.php打开本地文件。成功打开,可以进行之后的步骤。

php+mysql+html网页的功能
注意:所涉及到的文件名称需要放在同一个目录下即
/var/www/html首先编写登陆界面
login.html,写登陆界面的代码的时候加了一个框架<div>...</div>使整个界面显的干净一些,但颜色并没有分开,偷懒使用了一个颜色=_=。

- 之后编写
login.php代码实现与数据库的链接,按照老师的代码进行参考。有几点需要注意:命令$mysqli = new mysqli ("ip地址","mysql用户","mysql用户的密码","使用的表名")ip地址填本机ip地址,就是127.0.0.1,填写网络地址会影响到实验结果。

- 之后在浏览器中输入
localhost:8080/login.html打开本地文件,就可以访问之前写好的网址,可以尝试很结果能成功登陆的,也有登陆失败的,无法连接的。



SQL注入
SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。即sql注入是将用户输入的恶意字符串当成“sql”语句执行
在用户名输入框中输入
' or 1=1#密码随便输入,这时候的合成后的SQL查询语句为select * from users where username='' or 1=1#' and password=md5('')因为1=1是为真,那么一定可以登上。


我们还可以通过sql注入将用户名和密码保存在数据库中,但是需要修改之前的代码,因为我们之前编的代码中
if ($result = $mysqli->query($query_str))这条判断语句不允许多条sql语句执行,所以将它改成if ($result = $mysqli->multi_query($query_str))便能实现执行多个sql语句。在欢迎界面用户用一栏内输入
';insert into users(userid,username,password,enabled) values(777,'121212',password("121212"),"TRUE");#进行尝试,在数据库中查询到。


之后使用命令`';insert into users(userid,username,password,enabled) values(555,'353535',password("353535"),"TRUE");#`也可以查询到。成功的用sql注入将信息保存在数据库中。
XSS攻击
XSS表示Cross Site Scripting(跨站脚本攻击),通过插入恶意脚本,实现对用户游览器的控制。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy)。这种类型的漏洞由于被骇客用来编写危害性更大的phishing攻击而变得广为人知。对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的“缓冲区溢出攻击“,而JavaScript是新型的“ShellCode”。
但是这个实验不论怎么做图片就是出不来,很心累=_=
将图片保存到之前的目录下/var/www/html,之后在用户名一栏输入命名
<img src="20145335.jpg"/>5335</a>尝试了很多次就是没有做出来。



附加:发帖和会话管理实现
- 可以利用PHP实现会话管理,详细代码可以参考ltc同学的代码,所有代码依旧放在
/var/www/html下,在浏览器中输入http://localhost:80/logIn.php,进行登录:

- 登陆成功后如下图

- 点击
start a new post!发帖,进入如下界面:

- 提交之后跳转到如下界面,可以选择查看发过的帖子、继续发帖、返回或者退出登录等功能:

- 这个时候点击
CHECK查看发过的帖子,但是却什么内容都没有,由于这个操作是通过从data.txt文件中读取之前发帖时保存的记录来查看发帖内容,但是在/var/www/html目录下根本没有找到这个文件,这就说明之前创建也没有成功,后面发现/var/www/html底下文件默认的都是属于root的,其他用户没有权限进行操作,所以我们可以先使用touch data.txt建一个data.txt文件,再对该文件进行加权:


实验问答:
什么是表单?
答:表单是一个包含表单元素的区域,表单元素是允许用户在表单中(比如:文本域、下拉列表、单选框、复选框等等)输入信息的元素,表单在网页中主要负责数据采集功能,一个表单有三个基本组成部分:表单标签、表单域、表单按钮;
浏览器可以用什么语言?
答:常见的可以使用html语言、xml语言、以及php语言、javascript语言,本次实验都有所涉及,还有python语言。
WebServer支持哪些动态语言?
答:javascript、ASP、PHP、Ruby等语言。
心得体会
本次实验难度个人感觉应该在网页的联通和测试上,代码是一项很大的问题,之前虽然有学过这个web前端的知识,但是也忘得差不多了,这次很多的问题都存在于代码的编写上,感觉了攻克了代码问题实验也就好解决许多了,借助了老师给的代码的注释和代码很多问题仔细研究就会解决出来。
20145335郝昊《网络对抗》Exp 8 Web基础的更多相关文章
- 20155324王鸣宇 《网络对抗技术》Web基础
20155324王鸣宇 <网络对抗技术>Web基础 实践要求 ①Web前端HTML: 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HT ...
- 20155208徐子涵 《网络对抗技术》Web基础
20155208徐子涵 <网络对抗技术>Web基础 实验要求 Web前端HTML Web前端javascipt Web后端:MySQL基础:正常安装.启动MySQL,建库.创建用户.修改密 ...
- 20145215《网络对抗》Exp8 Web基础
20145215<网络对抗>Exp8 Web基础 基础问题回答 什么是表单? 表单是一个包含表单元素的区域,表单元素是允许用户在表单中(比如:文本域.下拉列表.单选框.复选框等等)输入信息 ...
- 20145208 蔡野 《网络对抗》Exp8 Web基础
20145208 蔡野 <网络对抗>Exp8 Web基础 本实践的具体要求有: (1).Web前端HTML(1分) 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POS ...
- 20145311 王亦徐 《网络对抗技术》 Web基础
20145311 王亦徐 <网络对抗技术> Web基础 实验内容 简单的web前端页面(HTML.CSS等) 简单的web后台数据处理(PHP) Mysql数据库 一个简单的web登陆页面 ...
- 20145325张梓靖 《网络对抗技术》 Web基础
20145325张梓靖 <网络对抗技术> Web基础 实验内容 开启apahce,设计web前端HTML 设计web前端javascipt 设计web后端mysql 设计web后端php ...
- 20155202《网络对抗》Exp8 Web基础
20155202<网络对抗>Exp8 Web基础 基础问题回答 什么是表单? 表单是一个包含表单元素的区域,表单元素是允许用户在表单中(比如:文本域.下拉列表.单选框.复选框等等)输入信息 ...
- 20155204《网络对抗》Exp8 Web基础
20155204<网络对抗>Exp8 Web基础 一.基础问题回答 1.什么是表单 表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用C ...
- 20155217《网络对抗》Exp08 Web基础
20155217<网络对抗>Exp08 Web基础 实践内容 Web前端:HTML基础 Web前端:javascipt基础 Web后端:MySQL基础 Web后端:PHP基础 SQL注入 ...
- 20155218《网络对抗》Exp8 Web基础
20155218<网络对抗>Exp8 Web基础 1.基础问题回答 1.什么是表单? 表单是一个包含表单元素的区域,表单元素是允许用户在表单中(比如:文本域.下拉列表.单选框.复选框等等) ...
随机推荐
- POJ_3264_Balanced Lineup
Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 57259 Accepted: 26831 ...
- Oracle安装部署之一键安装oracle数据库及其脚本
准备工作:通过ftp工具上传oracle安装软件到linux系统/mnt目录下,并通过unzip命令解压软件.--------------------------------------------- ...
- ArcGIS API for javascript开发笔记(六)——REST详解及如何使用REST API调用GP服务
感谢一路走来默默支持和陪伴的你~~~ -------------------欢迎来访,拒绝转载-------------------- 一.Rest API基础 ArcGIS 平台提供了丰富的REST ...
- deque Comparison of Queue and Deque methods Comparison of Stack and Deque methods
1. 队列queue和双端队列deque的转换 Queue Method Equivalent Deque Methodadd(e) addLast(e)offer(e) offerLast(e)re ...
- createrepo local http yum
https://www.jianshu.com/p/59ca879584a1 repodata作为软件的仓库,其目录下有四个必要文件:filelists.xml.[gz],other.xml.[g ...
- struct modbus是大端的
https://www.cnblogs.com/coser/archive/2011/12/17/2291160.html https://www.cnblogs.com/gala/archive/2 ...
- 2015 湘潭大学程序设计比赛(Internet)--G题-人生成就
人生成就 Accepted : 54 Submit : 104 Time Limit : 10000 MS Memory Limit : 65536 KB 题目描述 人生就像一个n*n的矩阵, ...
- MySQL(4):主从复制原理
1.主从复制概述 MySQL主从复制也可以称为MySQL主从同步,它是构建数据库高可用集群架构的基础.它通过将一台主机的数据复制到其他一台或多台主机上,并重新应用relay log中的SQL语句来实现 ...
- 【HTML5】实例练习
1.许多时髦的网站都提供视频.如果在网页上展示视频? <!DOCTYPE HTML> <html> <body> <video width="320 ...
- mysql 权限管理 记录
授权操作只能用root账号,其他账号都不行 创建一个mike账号 mysql'; Query OK, rows affected (0.08 sec) 查看是否创建账号 select * from m ...